취소

커뮤니티

가이드

서포트

전체

점심 다들 맛있게 드셨나요?. 2017년 3월 29일 수요일 자바 강좌 시작해보도록 하겠습니다.

 

오늘은 자바의 특징의 대해서 강좌하겠습니다.

 

자바의 개발진이 공개한 자바 언어 설계 목표는 다음과 같은 단어들로 요약 됩니다.

 

[자바의 특징]

     1.단순(Simple)         6.구조 중립적

    2.안전(Security)           7.멀티 쓰레드 지원

   3.이식성(Portability)        8.견고(robust)

  4.인터프리트 언어              9.분산처리 가능

 5.동적(Dynamic)                 10.객체 지향적

 

*단순하지만 강력하다.

자바는 C++에서 출발했지만 꼭 필요로 하는 기능만을 포함시키고 복잡하고 많이 보이지 않는 기능은 삭제하였습니다. 예를 들어 유지 보수를 힘들게 하였던 연산자 중복, 다중 상속 등의 복잡한 기능을 삭제 했습니다. 자바는 이러한 단순함을 가지면서도 C++에서 제공되지 않는 자동 메모리 관리기능, 멀티 쓰레드, 객체 지향적인 방법으로 제작된 방대하고 풍부한 라이브러리를 무료로 제공합니다. 따라서 프로그래머는 이러한 라이브러리를 사용하여 원하는 프로그램을 힘들이지 않고 작성할 수 있습니다.

 

*객체 지향적이다.

객체 지향(Object-oriented)은 “객체” 별로 코드를 작성하고 객체들을 조합하여 전체 프로그램을 완성하는 프로그램 설계 방법론입니다. 객체 지향 기법을 사용하면 작성된 코드를 재사용하기가 쉬워서, 보다 빠르게 신뢰성 있는 프로그램을 만들 수 있습니다. 객체 지향은 지난 40년 간의 연구를 통하여 그 가치를 입증한, 프로그램을 설계하는 방법론입니다.

 

*분산처리 지원

자바는 네트워크 상에서 동작 되는 것을 기본으로 설계된 언어로 TCP/IP, HTTP, FTP같은 프로토콜을 처리할 수 있는 라이브러리를 가지고 있습니다. 따라서 다른 언어보다 쉽게 네트워크 관련 프로그램을 개발할 수 있으며 프로그래머는 로컬 파일 시스템에서 파일에 접근하는 것과 마찬가지로 네트워크에서 URL을 이용하여 네트워크의 자원에 접근하여 사용할 수 있습니다.

 

*견고하다.

자바 컴파일러는 실행 시에 문제를 일으키는 많은 오류들을 잡아냅니다. 또 포인터 오류로 인한 메모리 누수 문제도 자바에서는 일어나지 않습니다. 연결 리스트와 같은 복잡한 자료 구조를 구현하려면 포인터는 필수입니다. 하지만 포인터로 인하여 많은 메모리 오염 문제들이 발생합니다. 자바는 포인터 개념을 사용하면서도 보다 안전하게 처리합니다.

 

*안전하다.

자바는 네트워크 환경에서 운영되는 언어이므로 다른 언어보다 안정성이 요구됩니다. 자바는 처음부터 다음과 같은 작업들이 불가능하게끔 설계 되었습니다.

 

-실행 스택을 벗어난 접근

-자신의 프로세스 밖의 메모리 공간 접근

-파일을 허락없이 읽거나 쓰는 것

 

자바 버전 1.1부터는 클래스의 디지털 서명 개념을 도입하였습니다. 따라서 클래스의 작성 자를 신뢰하면 클래스에게 더욱 많은 권한을 부여하도록 설계하였습니.

 

*컴퓨터 구조에 중립적이다.

이 특징이 가장 중요하다 할 수 있습니다. 사실 이 아이디어는 자바가 처음이 아닙니다. 하지만 실제로 이 아이디어를 성공시킨 언어가 바로 자바입니다. 자바에서는 컴파일된 실행 코드가 플랫폼 독립적입니다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트 코드(Byte Code)라는 특수한 이진 파일로 변환 합니다. 바이트 코드를 실행하기 위해서는 자바 가상 기계(JVM : Java Virtual Machine)라는 특수한 가상 컴퓨터 S/W(Soft-Ware) 가 필수로 필요한데, 이것이 바이트 코드를 한 줄씩 읽어서 해석한 후에 실행합니다. 따라서 자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 자바 가상 기계를 설치할 수 있는 시스템에서는 어디서나 실행할 수 있다. 이러한 특징 때문에 자바는 인터넷 시대에 가장 잘 맞는 언어라고 할 수 있는데. 인터넷은 다양한 종류의 컴퓨터가 연결된 네트워크이기 때문이다.

 

*이식성이 있다.

C나 C++와는 다르게 자바는 구현에 따라서 달라지는 언어 스펙이 없습니다. 예를 들면 자바에서 int형은 항상 32비트입니다 C/C++에서는 int형이 16비트도 될 수 있고 32비트 일수도 있다. 이것은 프로그램을 다른 컴퓨터 기종으로 이식하는 경우에 많은 문제를 야기할 수도 있습니다. 또 이진 데이터들은 고정된 형식으로 저장되고 전송됩니다. 따라서 Big-Endian이나 Little=Endian과 같은 바이트 순서(Byte Ordering)문제가 발생하지 않습니다. 문자열은 항상 유니코드 형식으로 저장됩니다.

 

*멀티쓰레딩 지원

자바는 프로그래밍 언어안에서 멀티쓰레딩(Multithreading)을 지원한다. 따라서 다른 언어와는 다르게 아주 쉽게 멀티쓰레딩 프로그램을 작성할 수 있습니다. 멀티 쓰레딩이란 여러 가지 작업을 동시에 실행하는 것을 의미한다. 특히 자바는 멀티 프로세서 하드웨어를 지원하도록 설계 되었으므로 멀티 프로세서 시스템에서 높은 효율을 낼 수 있다.

 

*동적이다(Dynamic)

자바는 동적으로 변화하는 환경에 적응하도록 설계 되었습니다. 라이브러리들은 실행 파일에 영향을 끼치지 않고 자유롭게 새로운 기능들을 추가할 수 있다. 기존의 C나 C++ 프로그램들은 라이브러리들이 변경되면 소스 파일들을 다시 컴파일, 링크하여 새로운 실행 파일을 생성하여야 했습니다. 하지만 자바는 실행 되기 직전에 라이브러리를 동적으로 링크하므로 실행 할 때 변경된 라이브러리가 자동적으로 참조됩니다.

 

(위 내용은 자바언어가 아닌 다른 언어들(C/C++/C#...)을 까려고 쓴글은 절대 아님을 밝힙니다. 오해소지있으면 안되니깐요 ㅎ)

 

 **********************************************************************************************

1-3은 자바 가상기계 설명하려고 했으나...진짜 별로 중요하지는 않거든요..

넘어가도록 할게요 ㅎㅎ

다음 강좌는 자바의 종류와 자바로 만들수 있는 것들, 이제 JDK 8을 설치하는 강좌로 돌아오겠습니다!!!

좋아요와 댓글 피드백은 언제나 환영입니당~~~ 감사합니다~~~

</blockquote><p></p>