티스토리 뷰

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)들을 개발자가 직접 선언하여 처리해야 한다그렇지 않으면 아예 컴파일이 되지 않는다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
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
글 보관함