티스토리 뷰
Java의 특징
- 이식성이 높은 언어 : 자바 언어로 개발된 프로그램은 소스파일을 수정하지 않아도 자바 실행환경(Java Runtime Environment, JRE)이 설치되어 있는 모든 운영체제에서 실행 가능하다.
- 객체지향 언어 : 객체지향 프로그래밍(Object Oriented Programming, OOP), JAVA는 100% 객체지향 언어이며, 객체지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원한다.
- 함수적 스타일 코딩을 지원 : 함수적 프로그래밍은 대용량의 데이터 병렬처리와 이벤트 지향 프로그래밍을 위해 적합하기 때문에 최근 들어 다시 주목받고 있다. 자바는 이 함수적 프로그래밍을 위해 람다식을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션 요소를 필터링, 매핑, 집계 처리하는게 쉬워지고 코드가 매우 간결해진다는 장점이 있다.
람다식 : 식별자 없이 실행가능한 함수 표현식, 쉽게 말하면 함수에 이름이 없어도 되는 식이다.
1 2 3 4 | ( 매개변수 ) -> { 실행구문 } ( 매개변수 ) -> 실행구문 () -> { 실행구문 } () -> 실행구문 | cs |
- 메모리를 자동으로 관리 : C++이 메모리 관리를 위해 개발자가 직접 코드를 작성해야 하는 반면 자바는 개발자가 메모리에 직접 접근할 수 없으며 자바가 직접 메모리를 관리한다. 객체를 생성할 때 자동적으로 메모리 영역을 찾아서 할당하고 사용이 완료되면 Garbage Collector를 실행시켜 자동적으로 사용하지 않는 객체를 제거한다. 따라서 개발자는 메모리 관리의 수고스러움을 덜고 코딩에 좀 더 주력할 수 있다.
Garbage Collector : JVM은 Garbage collector을 통해 메모리 관리 기능을 자동수행한다. 객체의 생존 여부를 판단하여 더 이상 사용되지 않는 객체를 해제하는 방식으로 메모리를 자동 관리한다.
- 다양한 애플리케이션을 개발할 수 있다 : 자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다. 또한 콘솔 프로그램, 클라이언트용 윈도우 애플리케이션, 서버용 웹 어플리케이션, 모바일용 안드로이드 앱에 이르기까지의 거의 모든 곳에 실행되는 프로그램을 개발할 수 있다.
- 멀티스레드를 쉽게 구현할 수 있다 : 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.
- 동적 로딩(Dynamic Loading)을 지원 : 애플리케이션이 실행될 때 모든 객체가 생성되지 않고 각 객체가 필요한 시점에 클래스를 동적로딩해서 생성된다. 또한 유지보수 시 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일 할 필요가 없다. 따라서 유지보수가 쉽고 빠르다.
동적로딩 : 자바 프로그램은 한 개 이상의 클래스의 조합으로 실행된다. 실행 시, 모든 클래스 파일을 한 번에 불러오지 않고 요청하는 순간에 로드한다. 이는 자바의 클래스 로더가 수행하며 클래스 로더는 .class 바이트 코드를 읽어들여 class 객체를 생성하는 역할을 담당한다. 즉, 클래스 로더는 클래스가 요청될 때 메모리로 로드하는 역할을 하며 자바 가상머신의 중요한 요소 중 하나이다.
- 오픈소스 라이브러리가 풍부하다 : 자바는 오픈소스 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 많다. 오픈소스 라이브러리를 사용하면 개발시간을 단축하면서 안정성이 높은 애플리케이션을 쉽게 개발할 수 있다.
- 속도가 느리다 : 자바는 한 번의 컴파일링으로 실행가능한 기계어가 만들어지지 않고 JVM에 의해 기계어로 번역되고 실행하는 과정을 거치기 때문에 C나 C++의 컴파일 단계에서 만들어지는 완전한 기계어보다는 속도가 느리다. 그러나 바이트 코드를 기계어로 변환해주는 JIT 컴파일러 같은 기술 적용으로 JVM의 기능이 향상되어 속도의 격차가 많이 줄어들었다.
- 예외처리가 불편하다 : 자바는 다른 언어들과 달리 프로그램 실행 시 발생할 수 있는 예외(Exception)들을 개발자가 직접 선언하여 처리해야 한다. 그렇지 않으면 아예 컴파일이 되지 않는다.
'프로그래밍 > Java' 카테고리의 다른 글
Java 프로그래밍 -언어의 활용- (0) | 2018.02.22 |
---|---|
Java 프로그래밍 -파일 생성- (0) | 2018.02.22 |
Java 프로그래밍 -설치- (1) | 2018.02.22 |
Java 프로그래밍 -프로그램 구조- (0) | 2018.02.22 |
Java 프로그래밍 -개요- (0) | 2018.02.21 |
- Total
- Today
- Yesterday
- RDBMS
- SQLite
- Azure
- REACT
- Cloud
- Quasar
- nuxt.js
- Gatsby.js
- PostgreSQL
- svelte
- DevOps
- Angular
- vue
- oracle
- aws
- node.js
- Remix
- alpine.js
- Next.js
- nosql
- MySQL
- 이진탐색 #중복
- gcp
- vue.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |