Java에 대해 포스팅이 두서없이 이루어진 것 같아서 앞으로 차근차근 중요한 부분 위주로 다시 다뤄보고자 합니다.
먼저 Java언어의 특징부터 다루도록 하겠습니다.
[특징]
1. 이식성이 높은 언어
- 이식성: 서로 다른 실행환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것
: Java언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행환경(JRE: Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능합니다. 따라서 자바언어는 이식성이 높은 프로그래밍 언어라 할 수 있습니다.
2. 객체 지향 언어
- 객체지향 프로그래밍(OOP) : 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법
: 자바는 100% 객체지향 언어입니다. 객체를 만들기 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결해 목적에 맞는 프로그램을 만들어 냅니다. 자바는 아무리 작은 프로그램이라도 객체를 만들어 사용하게 됩니다.
처음부터 객체를 고려해 설계되었기 때문에 객체지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원합니다.
3. 함수적 스타일 코딩을 지원
: 자바는 함수적 프로그래밍을 위해 람다식을 자바8 부터 지원합니다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집게처리하는데 쉬워지고, 코드가 매우 간결해집니다.
4. 메모리를 자동으로 관리
: C++은 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야합니다. 만약 이 작업을 잘 처리하지 않으면 프로그램은 불완전해지고 갑자기 다운되는 현상을 겪게 됩니다. 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며 메모리는 자바가 직접 관리하게 됩니다. 객체 생성 시 자동적으로 메모리영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector) 를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜줍니다. 따라서 개발자는 메모리 관리의 수고를 덜고, 핵심기능 코드 작성에 집중할 수 있습니다.
5. 다양한 애플리케이션 개발
: 자바는 윈도우, 리눅스, 유닉스 등 다양한 운영체제에서 실행되는 프로그램을 개발 할 수 있습니다. 단순한 콘솔 프로그램부터 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션 그리고 모바일용 안드로이드 앱에 이르기까지 거의 모든 곳에서 실행되는 프로그램을 개발 할 수 있습니다.
6. 멀티쓰레드를 쉽게 구현 가능
: 하나의 프로그램이 동시에 여러 작업을 처리해야 하는 경우와, 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬처리하려면 멀티쓰레드 프로그래밍이 필요합니다.
자바는 쓰레드 생성 및 제어와 관련된 라이브러리 API를 제공하고있기 때문에 실행되는 운영체제에 관계없이 멀티 쓰레드를 쉽게 구현 가능합니다.
7. 동적로딩(Dynamic Loading)을 지원
: 자바 애플리케이션은 여러개의 객체가 서로 연결되어 실행되는데, 이 객체들은 클래스로부터 생성됩니다.
애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적로딩해서 객체를 생성합니다. 또한 개발완료후 유지보수가 발생하더라도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일 할 필요가 없습니다. 즉, 유지보수를 쉽고 빠르게 진행할 수 있습니다.
8. 오픈 소스 라이브러리가 풍부
: 자바는 오픈소스언어이므로 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 많습니다. 고급 기능을 구현하는 코드를 직접 작성할 경우 시간과 노력이 필요하고, 실행 안전성을 보장할 수 없지만 검증된 오픈소스 라이브러리를 이용하면 개발기간을 단축하며 안전성이 높은 애플리케이션을 쉽게 개발할 수 있습니다.
'Programming > JAVA' 카테고리의 다른 글
Java - (3) String Type (문자열 타입) (0) | 2016.05.04 |
---|---|
Java - (2) 데이터타입(Data Type) (0) | 2016.05.04 |
Java(Data Structure) - List, Set, Map (0) | 2016.04.22 |
리스트(List) TestList (0) | 2016.04.22 |
배열(Array) Test_Array (0) | 2016.04.22 |
WRITTEN BY