본문 바로가기
JAVA/기본이 중요하지.

자바 언어 (java language)

by 램쥐뱅 2016. 5. 4.

자바는.


자바는 1990년대 썬 마이크로 시스템즈(Sun Microsystems, Inc, 이하 썬)의

제임스 고슬링(James A. Gosling)이 개발한 언어이다.


제임스 고슬링 형님은 자바의 아버지라고 불리는 사람이며 자바가 객체 지향 프로그래밍(Object oriented Programming)을 지원하는 언어가 되도록 가장 큰 영향력을 주었다.


원래는 가전제품에 설치될 임베디드 시스템(Embedded System)을 위한 언어로 개발되었기 때문에 개발 환경에 구애받지 않도록 설계되었다.

그 당시 객체 지향 프로그래밍과 개발 환경에 구애받지 않는 특징이 지금의 자바 형태에 근간이 되었다.


자바는 개발 목적에 따라 언어 사용환경을 크게 세 가지로 구분 할 수 있다.



Java SE(Java Standard Edition)

 

자바 표준 플랫폼으로 JVM(Java Virtual Machine) 운영 환경과 API에 대한 개발 환경을 갖추고 있다.

Java SE는 표준 플랫폼이므로 다른 플랫폼들은 Java SE를 기준으로 기능을 추가하거나 성격에 맞게 약간 변형한 것들이다.

그러므로 자바의 모든 기본 문법 및 API들은 Java SE를 토대로 하고 있다.



Java EE(Java Enterprise Edition)


Java EE는 J2EE라고 불리며 서버 기능 개발을 위한 플랫폼을 지칭한다.

Java SE를 바탕으로 웹 애플리케이션 서버가 필요로 하는 기능들이 추가되었다. 대표적인 기능들은 JSP, Servlet, EJB, JMS 등이있다.

J2EE를 보통 WAS라고 부르며 대표적인 제품으로는 Java EE 인증을 받은 Jeus, Glass fish, JBoss 등이 있고

인증을 받지 못한 Apache, Jetty 등이 있다.



Java ME(Java Micro Edition)


J2ME라고 부르며, 모바일 디바이스 혹은 셋탑 박스와 같은 임베디드 장비를 위한 개발에 사용되는 플랫폼이다.

Java SE의 기능을 축소해서 가볍게 만든 플랫폼 이다.




자바의 특징.



1. 자바는 쉬운 문법을 제공한다.

자바는 타 언어에 비해서 문법이 쉽고 진입 장벽이 낮은 편이다. 하지만 문법이 쉽다고 해서 제공하는 기능이 적다는 뜻은 아니다.



2. 자바는 독립적인 언어다.

자바를 사용해서 개발됨 애플리케이션은 JVM(Java Virtual Machine, 자바 가상 머신)이라는 일종의 가상 서버 위에서 동작한다.

따라서 자바로 만든 프로그램을 어떤 OS에서 실행하든 간에 재컴파일 하거나 시스템 라이브러리에 맞게 다시 개발할 필요가 없다.

JVM은 자바의 장점이기도 하지만 반대로 그만큼 컴퓨터를 차지하기 때문에 리소스 손일이 생긴다는 단점도 있다.



3. 자바는 편리한 언어다.

JVM에서는 가비지 컬렉터(Garbage Collector)라는 일종의 메모리 관리 프로세스가 동작하고있다.

C, C++같은 언어를 사용해서 프로그래밍할ㄸ 떄는 메모리에 데이터를 동적 할당한 다음, 사용이 끝난 데이터는 다시 메모리에서 반환해야만 한다. 이런 메모리 관리에 실수 혹은 문제점이 발생한다면 메모리 누스(Memory leak)현상등이 발생할수 있다. 하지만 자바를 사용하면 개발자는 메모리에 데이터를 할당하고 사용하기만 하면 된다. 메모리를 정리하고 오래된 데이터를 삭제하는 귀찮은 작업은 가비지 컬렉터가 담당하기때문이다.



4. 자바는 객체지향 언어다.

자바는 걸계 단계부터 객체 지향 프로그래밍을 지원하도록 설계되었다. 그러므로 객체지향(Object Oriented) 개념인 

캡슐화(Capsulation), 상속(Inheritance), 다형성(Polymorphism) 등을 지원하는 문법이 있다.



5. 자바는 멀티 스레드 프로그래밍을 지원한다.

자바는 한 개의 프로세스 내부에서 여러 개의 일을 동시에 처리할 수 있다. 이때 일을 처리하는 흐름을 스레드 라고 한다.

프로세스 내부에 하나의 흐름이 있다면 싱글 스레그(single-thread), 두 개 이상인 경우에는 멀티 스레드(multi-thread)라고 한다.

이렇게 하나의 프로세스에서 스레드 여러 개를 이용해 한 개 혹은 그 이상의 작업(task)을 나누어 처리하는 방법을 멀티 스레드 프로그래밍(multi-thread programming)이라 한다.



6. 자바를 지원하는 수많은 오픈 소스 프로젝트가 있다.

자바의 가장 큰 장점은 진행 중이거나 이미 진행이 완료된 방대한 양의 오픈 소스 프로젝트가 있다는 것이다. 그리고 각 프로젝트들은 체계적인 관리와 버전 업그레이드를 위해서 다양한 정보를 공유하는 커뮤니티를 갖고 있다.

대표적인 것으로 자바 개발에 필요한 편리한 기능들을 라이브러리 형태의 컴포넌트로 제공하는 Apache Commons 프로젝트, 자바 서버 프레임워크 플랫폼인 스프링(Spring), 자바 기반의 검색 엔진인 루씬(Lucene), 자바 기반의 No-SQL 데이터베이스인 카산드라(Cassandra) 그리고 최근 수많은 개발자들에게 각광 받고 있으며 대량의 데이터를 여러 대의 컴푸터가 처리할수 있는 분산 파일 시스템인 하둡(Hadoop) 프로젝트 등이 있다.

이러한 오픈 소스 프레임워크나 플랫폼 혹은 엔진의 기능을 실제 프로젝트에 구현하기 위해서는 각각의 기능들에 대해서 공부하고 사용법을 익혀둘 필요가 있다. 이런 오픈 소스 플랫폼과 컴포넌트들을 사용한다면 복잡한 indexing 알고리즘이나 자료 저장 메커니즘 등을 구현하는 시간과 작업량을 확연히 줄일 수 있을 것이다. 이는 컴퓨터 공학에서 말하는 개발의 생산성과 효율성의 증대를 의미한다.












참고. 


자바를 다루는 기술.

댓글