프로그래밍언어 자바[JAVA]

자바는 프로그래밍언어의 하나로 대표적인 객체지향 프로그래밍 언어입니다.
1991년 제임스 고슬링이 썬 마이크로시스템즈에서 연구원들과 함께 C언어 기반으로 연구를 시작하였다.
가전제품들의 자동화 구현을 위하여 어떤종류의 CPU칩에서도 동작하고, 네트워크 연결로 통제가능한 프로그램 언어를 개발한다는 취지였다.
제임스 고슬링은 연구실 밖에 있는 참나무를 보고 언어명을 오크(Oak)라 지었으나, 다른 업체에서 이미 상표등록을 하여서 선점을 하였기에 다른 이름으로 변경해야만 했었다.
여러이름의 후보가 논의 되었으나 커피를 좋아하는 연구원들에 의해서 지금의 이름인 자바(Java)가 탄생하게 되었다.
자바는 1993년 인터렉티브TV(Interactive TV)에 적용되기도 하였고, 기존의 월드 와이드 웹서비스(www)가 가지고 있었던 한계와 높은 호환성과 간단하고 정제된 언어이다.
최초 공개버전 자바 1.0은 1995년에 출시 되었고, C언어보다 네트워크 환경에 대한 지원이 간편했기 때문에 자바 애플릿 형태로 웹에서 많이 사용되었다.
1998년 12월 ~ 1999년에 걸쳐 출시된 자바2는 여러가지 플랫폼에 사용할 수 있는 설정을 지원하였다.

1995년 자바1.0(JDK 1.0)이 출시된 이후에 썬 마이크로시스템즈는 2006년 대부분의 자바코드를 GPL 라이선스로 공개하였다.

 

 

2010년 오라클에 인수된 이후 현재는 자바에 대한 유지보수나 관리는 오라클에서 책임지고 있다.
자바는 Java SE와 JDK/JRE 버전으로 관리되고 있다.

 


자바는 크게 4가지로 분류할 수있다.

 

* Java SE(Java Standard Edition / J2SE)
자바의 표준으로서 자바의 핵심 API, 기능등을 제공하고 JDK 항목도 참고한다.

 

*Jakarta EE, 구 Java EE(Java Enterprise Edition / J2EE)
기업에서 관리하는 서버의 페이지에 유리하고, JSP와 서블릿(Servlet), 웹어플리케이션에 관한 여러가지 기술들이 내장되어 있다.

 

* Java ME(Java Micro Edition / J2ME)
센서, 셋톱박스, PDA와 같은 임베디드 환경에 최적화된 시스템이다.

 

* JavaFX
데스크탑 어플리케이션의 개발과 배포 그리고 크로스플랫폼과 GUI 라이브러리를 갖추고 있다.

 

 


여기까지는 자바의 역사와 구성을 알아봤습니다. 다음으로는 저의 생각과 장단점에 대해서 이야기 하도록 하겠습니다.

제가 생각하는 자바는 한마디로 말하면 객체다 라고 할 수있습니다. 객체를 이해하면 자바의 반절은 이미 깨우쳤다해도 과언이 아닙니다. (객체지향에 대해서는 다음에 포스팅 하겠습니다.)
이미 다른 몇몇 언어들도 객체지향을 표현 할 수있게 업데이트가 되어있으며, 절차지향형 언어에 비해서 크고 복잡한 프로그래밍에 유리합니다.

 

 

 

★ 자바의 장점

 

1. 자바는 간단하면서 가독성이 좋다. 일반적으로 소프트웨어를 개발하면 비용도 많이 들고, 유지보수 비용또한 엄청나다. C언어 기반으로 만들어지기는 했지만 C언어에서 문제가 되는 부분을 오버로딩이나 상속등을 통해서 제거했다. 또한 메모리 할당문제도 자동으로 회수와 할당(auto garbage collection)을통해서 극복했다. 자바는 같은 시기에 만들어진 언어에 비해서 명확하고 가족성이 뛰어났다고 볼 수 있다.

 

2. 자바는 객체지향언어다. 자바에는 상속이라는것이 있다. 상속을 통해 부모의 객체는 자식 객체에서 모두 사용 할 수있기 때문에 개발시 재활용의 의미가 크다고 볼 수있다.

 

3. 안정성과 보안에 강하다. 다른언어보다 높은 안정성을 꼽고 있다. 특히 다중상속을 제거함으로서 안정성을 높였으며, 네트워크 분산처리 환경에서 사용하기 위해서 디자인된 언어인 만큼 보안에 중점을 두고 있다. 자바는 바이러스가 침투하지 못하는 구조를 가지고 메모리에서 데이터접근을 제한 할 수 있기 때문에 데이터접근을 쉽게 차단 가능하다.

 

4. 호환성이 매우 좋다. 운영체제에 JVM(Java Virtual Machine)을 설치하게 되면 자바로 만든 프로그램은 어떤 컴퓨터에서도 똑같이 작동한다. JVM에서 구동 가능한 자바이외의 언어가 존재하는데, 이를 사용하면 자바와 동일한 수준의 호환성을 볼 수있다.

 

 


★ 자바의 단점

 

1. 속도가 느리다. 느리긴 하지만 C/C++과 같은 네이티브 바이너리 코드로 만드는 언어보다 늦는다는 이야기다. 다른 언어들과 비교했을때 오히려 빠르다. 자바스크립트나 파이썬보다도 빠르다고 볼 수있다.


2. JVM의 로딩속도가 느리다. 자바는 JVM이 반드시 로딩되어야 하기 때문에 느릴 수밖에 없다.


3. 가비지 컬렉션에 의한 지연문제. 메모리 프리징 현상이 초기부터 자바를 괴롭혔다고 볼 수있다. 지금은 많이 개선되었지만 그래도 단점중의 하나이다.


4. 불편한 예외 처리. 다른 언어에서도 사용하고 있는 좋은 기능이지만 자바에서는 개발자의 검사가 필요한 예외라면 무조건 선언을 해줘야한다.


5. 소스 코드의 길이가 길다. 다른 언어에 비해서 길이가 긴편이다. 같은 기능을 프로그래밍 한다고 하더라도 코드자체가 길다. 기본적인 구조 코드 자체가 많기 때문에 길수밖에 없다.

 

 


자바에 대해서 이야기 해봤는데 무척 길어진거 같습니다.
저도 포스팅을 하면서 다시한번 공부하는 시간을 가진거 같습니다.
앞으로는 객체지향, 자바개발환경, 자바의 기초 등을 순서대로 포스팅하도록 하겠습니다.

2019년 1월부터 오라클에서 자바를 유료화 했습니다.
물론 개인사용자는 2020년까지 사용가능한데, 자바를 공부한 사람으로써 앞으로 어떻게 해야할지 고민이 되는 부분이네요.
어쨋든 그건 나중에 생각하기로 하고 계속 포스팅 하도록 하겠습니다.

 

 

2019/05/20 - [Language/Java] - 객체지향언어란? [특징, 장점, 단점, 종류]

+ Recent posts