IT world

Java란 본문

코딩/Java

Java란

엄킹 2019. 11. 25. 12:06

자바 소개


1995년도에 처음 썬 마이크로시스템즈에서 자바언어를 발표한 후, 지금까지 자바는 성공한 프로그래밍 언어로서 전세계적으로 다양한 분야에서 사용되고 있다. 오크(Oak)라는 언어에서부터 시작되었으며 오크는 가전제품에서 사용될 목적인 언어었지만 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되었고 이름도 자바로 변경되었다.


메모리 및 CPU를 지나치게 많이 사용하기 때문에 윈도우 프로그래밍 언어로는 부적합하다는 문제점이 있었다. 하지만 인터넷이 활성화 되면서 웹 애플리케이션 구축용언어로 자바가 급부상하였다.  기업체 및 공공 기관의 다양한 서버운영체제에서 단 한번의 작성으로 모든 곳에서 실행 가능한 언어는 자바뿐이었기 때문에 지금도 그렇지만 그 당시에도 많은 인기를 얻게 된 언어로 시작되었다.







자바의 특징


1. 이식성이 높은 언어이다.


이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행 할 수 있는 것을 말한다

예를 들어 윈도우에서 실행하는 프로그램을 리눅스에서 실행할 수 있다면 이식성이 높은 것이고 실행할 수 없다면 이식성이 낮은 것이다.  자바언어로 개발된 개발된 프로그램은 소스 파일을 다시 수정하지 않아도 자바 실행환경(JRE)이 설치되어 있는 모든 운영체제에서 실행이 가능하다.



2. 객체지향언어이다.


컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위 즉 객체로 바라보는 것이다. 자바는 100% 객체지향언어이며 객체를 만들기 위해 설계도인 클래스를 작성해야하고 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다. 아무리 작은 프로그램이라도 객체를 만들어 사용하며 처음부터 객체를 고려하여 설계되었기 때문에 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.



3. 함수적 스타일 코딩을 지원한다.


대용량 데이터의 병렬처리 그리고 이벤트 지향 프로그래밍을 위해 최근 들어 함수적 프로그래밍이 다시 부각되고 있다. 자바는 람다식을 자바 8부터 지원하고 있으며 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고 코드가 매우 간결해진다.



4. 다양한 애플리케이션을 개발할 수 있다.


c++은 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성하고 이 작업을 성실하게 해주지 않으면 프로그램은 불완전해지고 감자기 다운되는 현사을 겪게된다. 하지만 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며 메모리는 자바가 직접 관리한다.



5. 멀티스레드를 쉽게 구현할 수 있다.


하나의 프로그램이 동시에 여러가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬처리하려면 멀티 스레드 프로그래밍이 필요하다. 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다. 



6. 동적로딩(Dynamicc Loding)을 지원한다.


자바 애플리케이션은 여러개의 객체가 서로 연결되어 실행되는데 이 객체들은 클래스로부터 생성된다. 애플리케이션이 실행될 때 모든 객체가 생성되지 않고 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다. 개발 완료 후 유지보수(수정)가 발생하더라도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일할 필요가 없으며 이러한 장점때문에 유지보수를 쉽고 빠르게 진행할 수 있다.


7. 막강한 오픈소스 라이브러리가 풍부하다.


자바 자체가 오픈소스언어이기 떄문에 라이브러리 또한 오픈소스가 풍부하다. 고급 기능을 구현하는 코드를 직접 작성할 경우 시간과 노력이 필요하고 실행 안전성을 보장할 수 없지만 검증된 오픈소스 라이브러리를 사용하면 개발 기간을 단축하면서 안전성 높은 애플리케이션을 쉽게 개발할 수 있다.

'코딩 > Java' 카테고리의 다른 글

객체지향 프로그래밍(OOP)  (0) 2019.11.27
Java - 참조타입1  (0) 2019.11.27
Java - 정수와 실수  (0) 2019.03.14
Java - 변수  (0) 2019.03.14
Java - 문자와 문자열  (0) 2019.03.14
Comments