가치 있는 삶

"자바란 무엇인가? 자바의 특징 알아보기" 김찌의 자바공부 두번째 시간입니다.

본격적인 공부에 앞서 자바가 무엇이고 어디에 쓰이는지 간단히 알아볼께요. 






자바(java)란 무엇인가?


1995년 5월 미국의 썬마이크로시스템즈사에서 개발한 프로그래밍 언어

화기, 냉장고와 같은 가전 제품에서 사용할 목적인 오크(Oak) 언어에서부터 시작

자바는 제임스 고슬링과 몇몇 개발자들에 의해 만들어졌습니다. 당시 흔하지 않았던 가전 제품에 자바 언어를 이용하여 여러 프로그램을 구동시키기 위함이었다는데요. 지금이야 냉장고에 CPU가 탑재되고 집안의 가전제품을 원격적으로 관리하는 시스템들이 개발되고 있지만, 당시에 그런 것을 생각하고 연구개발 했다는 자체만으로도 매우 놀라운 일이었던 것 같습니다.  

그들의 노력과 연구의 결과로 새로운 언어가 개발되었고 이름을 '오크(Oak)' 라고 지었으나 이미 상표 등록이 된 이름이라는 것을 알고 자신들이 즐겨 마시던 커피 원산지 이름을 따서 'Java'라고 명명하게 된 것입니다.

1999년 인터넷이 활성화되면서 웹 애플리케이션 구축용 언어로 급부상

자바는 특히, 네트웍 프로그래밍을 할때 쉽고 간단하게 소스를 작성해서 개발을 할 수 있다는 큰 특징을 가지고 있는데요. 인터넷상에서 네트웍통신을 통해 프로그램간 또는 프로그램과 장비간의 통신에 주로 이용되도록 타깃이 맞춰져 있는 언어라고도 할 수 있습니다.

UI, 웹 어플리케이션 프로그램을 개발하는데 사용되고 있다

안드로이드 스마트폰에서 실행하는 앱들도 자바(java)로 개발하고 있고, 다양한 분야에서 널리 사용되고 있는데요. 국내에서 약 80% 정도의 높은 점유율을 보이고 있습니다.

2010년 오라클에서 썬마이크로스스템즈사를 인수하여 Java 개발, 관리, 배포를 하고 있다.




자바(Java)의 특징

이식성이 높은 언어

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


1. 자바(Java) 프로그래밍 언어로 소스 코드 파일(확장명 .java)을 작성한다.

2. 한번의 컴파일을 한다.

3. 컴파일을 하게 되면 클래스 파일(확장명 .java)이 생성된다.

4. 생성된 클래스를 윈도우, 리눅스, 맥에서 사용할 수 있다. 



객체 지향 언어

OOP(Object Orienter Programming)란 부품 객체를 먼저 만들고, 이것들을 조합해서 전체 프로그램을 완성하는 기법. 

자동차나 가전제품을 만들때 부품을 만들고, 만들어진 부품을 조립, 연결하여 완성된 자동차나 가전제품을 만들듯이 자바(Java)는 

아무리 작은 프로그램이라도 객체를 만들고 연결하여 목적에 맞는 프로그램을 만들 수 있다.

자바(Java)는 100% 객체지향 언어이다. 처음부터 객체를 고려하여 설계되었기 때문에 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.





함수적 스타일 코딩을 지원

객체 지향 언어인 자바(Java)가 version8 부터 함수적 스타일 코딩 방식인 람다식(Lambda Expressions)을 지원한다.

객체 지향 프로그래밍이 나오기 전에 Lisp 또는 Scheme와 같은 함수적 프로그래밍 언어가 있었는데, 현업에서 큰 호응을 얻지 못하다가 최근 다시 부각되고 있다. 대용량 데이터의 병렬 처리, 이벤트 지향 프로그래밍에 적합하기 때문이다.

장점 

1, 코드를 간견하게 작성할 수 있다.

2, 컬렉션 요소를 필터링, 매핑, 그룹핑, 집계 처리하는게 쉬워진다.



메모리를 자동으로 관리

자바(Java)가 메모리를 직접 관리한다. 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector)를 실행시켜 사용하지 않는 객체를 자동으로 제거한다. 따라서 개발자는 메모리 관리보다는 핵심 기능 코드 작성에 집중할 수 있다.



다양한 애플리케이션을 개발

자바(Java)는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행하는 프로그램을 개발할 수 있다.

단순한 콘솔 프로그램, 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션, 모바일용 안드로이드 앱에 이르기까지 거의 모든 곳에서 실행되는 프로그램을 개발 할 수 있다.

자바(Java)는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션 형태로 구분하고 있다.

Java SE(Standard Edition) - 기본 에디션

자바 프로그램을 실행시키는 JVM 정의

자바 프로그램들이 공통으로 사용하는 개발 도구와 API 정의

구현체 : JDK(Java Development Kit)

• Java EE(Enterprise Edition)

웹 애플리케이션, 웹 서비스, 분산 컴포넌트를 위한 개발 도구와 API 정의

Java ME(Micro Edition)

엠베디드 또는 모바일 장비를 위한 개발 도구와 API 정의



멀티 스레드(Multi-Thread)를 쉽게 구현

동시에 여러가지 작업을 할 경우나 대용량 작업을 빨리 처리해야 할 경우 병렬 처리를 해야한다. 이때 반드시 멀티 스레드가 필요한데, 자바(Java)는 멀티 스레드를 쉽게 구현할 수 있다.

운영체제 별로 멀티 스레드를 사용하는 API가 다르지만, 자바(Java) API를 사용하면 일관된 생성 및 관리가 가능하다.



동적 로딩(Dynamic Loading)을 지원

애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다.

유지보수시 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일 할 필요가 없다. 유지보수를 쉽고 빠르게 진행할 수 있다.



막강한 오픈소스 라이브러리가 풍부

자바(Java)는 오픈소스(Open Source) 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리도 오픈 소스가 많다.

검증된 오픈소스 라이브러리를 사용하면 개발 기간을 단축하면서 안전성이 높은 애플리케이션을 쉽게 개발할 수 있다.

많은 회사들이 자바를 선택하는 이유 중의 하나가 막강하고 풍부한 오픈소스 라이브러리가 있기 때문이다.