이식성이 높은 언어
자바 실행 환경(JRE : Java Runtime Environment)이 설치되어 있는
모든 운영체제에서 실행 가능
절차 지향 언어와 달리 호환성이 좋다.
※ JVM (Java Virtual Machine) : 자바 가상 기계
객체 지향 언어
(OOP : Object Oriented Programming)
객체를 먼저 만들고, 이것들을 조합해서 전체 프로그램을 완성하는 방법
자바는 100% 객체 지향 언어
코드 재사용 용이, 디버깅 용이
유지보수 비용↓
C++, VC++ 보다 더 완벽한 객체지향 언어!
main이라는 함수로 실행
Java, C#은 처음부터 클래스로 실행
함수적 스타일 코딩을 지원
(C언어와 같은 절차 지향적 코딩)
때로는 함수적 코딩이 더 효율적인 경우도 있어서!
자바 8부터 람다식(Lambda Expressions)을 지원
컬렉션의 요소를 필터링, 매핑, 집계 처리가 쉽고, 코드가 매운 간결
메모리를 자동으로 관리
개발자가 직접 메모리에 접근할 수 없도록 설계
자바가 직접 메모리 관리
객체 생성 시 자동적으로 메모리 영역을 찾아서 할당
사용이 완료되면 쓰레기 수집기(Garbage Collector [가비지 컬렉터])를
실행시켜 자동으로 사용하지 않는 객체를 제거
다양한 어플리케이션 개발
다양한 운영체제(OS : Operating System)에서 실행되는 프로그램을 개발
콘솔 프로그램, 윈도우 애플리케이션(UI 애플리케이션), 서버용 웹 애플리케이션, 모바일용 안드로이드 앱 등...
다양한 애플리케이션을 위한 개발도구와 API를 에디션 형태로 구분
- Java SE (Standard Edition) - 기본 에디션
- 자바 가상 기계(JVM : Java Virtual Machine)을 비롯한 필수 도구, 라이브러리 API 정의
- 반드시 자바 개발 키트(JDK : Java Development Kit) 설치
- 구현체 종류
- JDK : JRE + 컴파일러 등의 개발 도구 (자바 프로그램을 개발하고 실행할 경우)
- JRE : JVM + 표준 클래스 라이브러리 (자바 프로그램을 실행만 할 경우)
- Java EE (Enterprise Edition) - 서버용 애플리케이션 개발 에디션
- 분산 환경(네트워크, 인터넷)에서 서버용 애플리케이션 개발을 위한 도구, 라이브러리 API 정의
- 서버용 애플리케이션으로는 Servlet/JSP를 이용한 웹 애플리케이션, 분산 처리 컴포넌트(EJB : Enterprise Java Bean), XML 웹 서비스(Web Services) 등...
- 구현체 : WAS(Web Application Server) -> Tomcat, WebLogin, Jeus, Jboss ...
- Java ME (Micro Editon)
- 임베디드 또는 모바일 장비를 위한 개발도구와 API 정의
멀티 스레드(Multi-Thread) 쉽게 구현
멀티 스레드 프로그래밍
→ 동시에 여러 가지 작업을 처리해야 할 경우, 대용량 작업을 분리해 병렬 처리
스레드 생성 및 제어와 관련된 라이브러리 API 제공
→운영체제와 상관 없이 멀티 스레드를 쉽게 구현
(원래는 운영체제에 따라서 멀티 스레드를 구현하는 방법이 다름)
동적 로딩(Dynamic Loading)을 지원
애플리케이션이 실행될 때 모든 객체가 생성되는 것이 아닌
객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성
유지 보수(수정)가 발생하더라도 해당 클래스만 수정 및 교체하면 되므로
전체 애플리케이션을 다시 컴파일 할 필요가 없다.
막강한 오픈소스 라이브러리가 풍부
오픈 소스(Open Source) 언어
막강하고 풍부한 자바 오픈 소스 라이브러리 제공
검증된 오픈소스 라이브러리를 사용하면 개발기간 단축 가능
노력↓, 시간↓, 유지보수 편리성↑
참고
표준 클래스 라이브러리(API : Application Programming Interface)
주소 : http://docs/oracle.com/javase/(사용할버전)/docs/api/
'IT > Java' 카테고리의 다른 글
[1] Java 란? 6_이클립스(Eclipse) 설치_Eclipse IDE for Java Developers (0) | 2020.12.31 |
---|---|
[1] Java 란? 5_이클립스(Eclipse) 설치 (0) | 2020.12.31 |
[1] Java 란? 4_메모장으로 class 파일 만들어보기 (2) | 2020.12.30 |
[1] Java 란? 3_자바 설치 (0) | 2020.12.30 |
[1] Java 란? 1_자바의 역사 (0) | 2020.12.29 |