Java 언어 초보자를 위한 수업입니다. 생활코딩의 Java 과정을 요약한 것입니다.
자바의 역사
1995년 자바의 아버지라고 불리는 제임스 고슬링과 그의 동료들에 의해서 시작된 프로젝트다. Java는 원래 가전제품을 제어하기 위한 언어로 고안되었지만 웹의 등장으로 엄청난 성공을 거두면서 주류 언어가 되었다.
자바의 특징
"Write once, run anywhere"
- 운영체제에 독립적
- 자바가상머신(JVM)을 통해서 가능 : 자바 응용프로그램은 운영체제(OS)나 하드웨어가 아닌 JVM하고만 통신하고 JVM은 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달.
- 자바 Application은 운영체제(OS)에 독립적이지만 JVM에 종속적임.
- 객체지향언어(OOP: Object Oriented Programming Language)
- 자바는 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수 객체지향언어이다.
- 재사용성과 유지보수의 용이성(객체지향언어의 특징)
- 배우기 쉬움 : 사용자들이 객체지향개념을 보다 쉽게 이해하고 활용할 수 있도록 하여, 객체지향 프로그래밍의 저변확대에 크게 기여하였다.
- 자바의 연산자와 기본구문은 C++에서, 객체지향관련 구문은 small talk(객체지향언어중 하나)에서 가져왔다. 이들 언어의 장점은 취하고 복잡하고 불필요한 부분은 과감히 제거하여 단순화함으로써 쉽게 배울수 있다. 따라서 간결하고 이해하기(명료) 쉬운코드를 작성할 수 있도록 하였다.
- 자바의 연산자와 기본구문은 C++에서, 객체지향관련 구문은 small talk(객체지향언어중 하나)에서 가져왔다. 이들 언어의 장점은 취하고 복잡하고 불필요한 부분은 과감히 제거하여 단순화함으로써 쉽게 배울수 있다. 따라서 간결하고 이해하기(명료) 쉬운코드를 작성할 수 있도록 하였다.
- 자동 메모리 관리(Garbage Collection)
- Garbage Collector가 자동으로 메모리 관리를 해주기 때문에 프로그래머는 따로 메모리를 관리 하지 않아도 된다.
- 자동 메모리 관리는 다소 비효율적인 면도 있지만, 프로그래머가 보다 프로그래밍에 집중할 수 있도록 도와준다.
- 네트워크와 분산처리지원
- Java API : 인터넷과 대규모 분산환경을 염두해 두었기 때문에 다양한 '네트워크 프로그래밍 라이브러리(Java API)'를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있다.
- 멀티쓰레드(Multi-thread) 지원
- 자바에서의 멀티쓰레드 프로그램은 시스템과 관계없이 구현가능
- Java API가 제공되므로 구현이 쉬움.
- 동적 로딩(Dynamic Loading)을 지원
- 일반적으로 자바로 작성된 Application은 여러 개의 클래스로 구성되어 있다. 자바는 다이나믹 로딩을 지원하기 때문에 실행시 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩
- 유연한 어플리케이션 작성 : 일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일 하지 않아도 된다.
자바의 단점
- 속도문제
-
자바는 하드웨어에 맞게 완전히 컴파일된 상태가 아니고, 실행시에 해석(인터프리터: interpret)되기 때문에 속도가 느리다는 단점을 가지고 있다.
- 그러나, 바이트코드(byte code)를 하드웨어의 기계어로 변환해주는 JIT컴파일러와 Hotspot(향상된 최적화 기술)과 같은 기술 적용으로 JVM 기능이 향상되어 속도문제가 상당히 개선되었다.
-
국내 자바 현황
자바는 최소한 국내에서 가장 시장 규모가 큰 언어입니다. 기업용 시장에서는 전통적인 강자였고, 안드로이드가 주류가 되면서 다시 한 번 그 중요성이 커지고 있는 언어입니다. 또한 자바는 거대 규모의 소프트웨어를 만드는데 적합한 언어입니다. 따라서 웅장한 소프트웨어를 만들기 위해서 필요한 다양한 연구와 자료가 풍부한 언어입니다. 자바를 배운다는 것은 이러한 성취에 접근 할 수 있는 손쉬운 방법이기도 합니다.