자바 언어의 탄생
1991년
Green Project에서 가정용 전자기기에서 사용되는 작은 컴퓨터 언어를 디자인 했다.
이때,
- 작고 견고한 언어, 신뢰할 수 있는 코드
- 특정 디바이스에 종속되지 않아야 함
와 같은 특성을 고려해 Virtual Machine에서 동작하는 중간코드를 생성해 이식성이 높은 언어를 디자인 했다.
1992년
초기 자바 언어는 절차지향언어와 객체지향 혼용해 사용했던 언어인 C++ 를 기반으로 개발되었다. 그러다가 C++ 의 여러가지 한계에 부딪혀
완벽한 객체지향 언어인 Oak 가 개발되었고 제임스 고슬링에 의해 명명된 Oak는 Oak라는 프로그램이 존재했기 때문에 이후 JAVA로 변경 되었다.
1994년
World Wide Web의 발전과 Mosaic의 사용에 주목
자바를 기반으로 한 웹 브라우저 제작 (HotJava 브라우저로 발전함)
applet이라 불리는 자바의 기능을 보여주기 위해 브라우저가 중간코드(bytecode)를 해석할 수 있도록 만듦
1996년~ 현재
Netscape 2.0에서부터 자바가 지원됨
많은 업체들이 자바를 지원하게 됨
자바 버전 1.2가 출시되면사. 자바 2 플랫폼으로 명명됨.
자바 언어의 특징
-
단순
C++의 전위처리, 포인터 사용, 다중 상속, 구조체, goto문 사용, 연산자 중복 기능 등을 제외
가비지 컬렉터에 의한 자동 메모리 관리로 할당된 메모리 해제를 신경쓰지 않아도 된다.
-
객체지향(object-oriented)
언어라는 객체를 사용해서 프로그램을 작성하도록 하는 언어
-> 재사용성을 높일 수 있음.
코드의 재사용을 넘어 객체의 재사용을 뜻하며, 프로그램 개발에 필요한 수많은 클래스 라이브러리들을 API로 제공함
-
분산 처리(Distributed)에 용이하다.
분산 환경에서 TCP/IP 등의 프로토콜을 통해 효율적으로 실행할 수 있도록 설계된 언어이다.
- TCP/IP 네트워크 기능 내장
- HTTP/ FTP 등과 같은 프로토콜을 쉽게 사용할 수 있도록 라이브러리 제공
- 서로 다른 컴퓨터 상의 객체들도 원격으로 호출하여 실행할 수 있는 원격 메서드 호출과 관련된 RMI(Remote Method Invocation)기능의 라이브러리 제공
-
인터프리터에 의해 실행됨
.java 형태의 텍스트 파일 -> 컴파일러에 의해 자바가상머신에서 수행될 수 있는 중간코드로 컴파일된다. -> .class(클래스 파일 == 바이트 코드) -> 실제 실행을 위해 인터프리터에 의해 기계어로 변환 -> 컴퓨터에서 실행
자바는 컴파일 언어임과 동시에 인터프리터 언어이다.
-
견고
에러의 원인이 되는 요소들을 제거
- 포인터를 사용하지 않음
- 가비지 컬렉션
- 데이터 타입 검사를 통해 에러 초기 검사
- 실행시간에 발생하는 에러 초기
-
안전
- 컴파일 시에 엄격하게 데이터 타입을 검사함으로써 프로그램 실행 시 발생할 수 있는 비정상적인 상황을 미리 감지
-
플랫폼 독립(Architecture Neutral)
사용하는 운영체제나 CPU 등의 하드웨어 사양에 관계없이 실행될 수 있음.
이식성이 높다.
-
높은 성능
가비지 컬렉션 : 메모리가 할당된 객체의 상태를 추적 관리, 더이상 참조 되지 않으면 다종으로 할당된 메모리 해제 (불필요한 메모리 낭비 방지)
-
멀티스레드
스레드 : 독자적으로 수행하는 하나의 작은 프로그램
멀티스레드: 한번의 여러개의 스레드가 동시에 수행되는 과정 / 하나의 CPU가 여러 개의 프로그램을 동시에 수행하도록 함 (수행 속도를 빠르게 함)
-
동적
변화하는 환경에 잘 적응되도록 설계됨
기존의 프로그램에 영향을 주지 않고, 라이브러리에 새로운 메서드나 속성들을 추가할 수 있음
프로그램과 프로그램에서 사용되는 라이브러리와의 연결을 실행시간에 수행함
-> 라이브러리의 변화를 곧바로 적용할 수 있음