위로
아래
Java 특징
자바 특징
- 프로그래밍 언어인 동시에, JAVA 언어로 기술된 프로그램 개발 및 실행 소프트웨어.
- 객체 지향 언어 OOP
- 플랫폼 독립적 : 자바 가상머신 JVM으로 돌아가서 운영체제에 종속적이지 않다
- 네트워크 분산처리 지원 : Java API(프로그래밍 라이브러리)를 통해 빠른 개발 가능
- 멀티스레딩 지원 : 한 프로세스에서 멀티태스킹 가능
- 동적 로딩 :자바로 작성된 애플리케이션 실행 시 필요한 시점에서 필요한 클래스만 로딩하여 실행한다. 일부 클래스가 변경되어도 다시 전체 컴파일을 진행하지 않아도 되며, 수정이 용이
- 자동 메모리 관리 : 자바로 작성된 프로그램은 실행 중일 때, 가비지 컬렉터가 자동으로 메모리를 관리해주기 때문에 메모리 관리가 따로 필요 없다.
- IDE 종류 : 이클립스, 인텔리제이(intelliJ)
- 프레임워크 종류 : 스프링 (spring)
- WORA(Write Once, Run Anywhere) : 자바의 표어. 한 번 작성하면 어디서나 실행할 수 있다.
Java 종류
자바 종류
- Java SE (J2SE, Jave Standard Edition) : 자바 표준 에디션
- Java EE (J2EE, Jave Enterprise Edition) : 자바 기업용 에디션. Java SE기반. 웹 프로그래밍 기능 추가(JSP, Servlet, JDBC, JNDI, JTA, EJB 등)
- Java ME (J2ME, Jave Micro Edition) : 자바 마이크로 에디션. 모바일 환경 등에서 조그만 가상 머신으로 동작시킬 수 있는 기능과 API 제공. Java SE기반. 임베디드 시스템에 사용.
- Java FX : 가볍고 예쁜 그래픽 사용자 인터페이스 (GUI)를 제공하는 에디션. 고성능의 하드웨어 그래픽 가속과 미디어 엔진 API를 제공해주어서 프로그램 성능에 신경써야 하는 분야에서 사용.
J2EE (Java EE 옛이름) : Java TM의 플랫폼 엔터프라이즈(기업) 환경에서 자바를 이용한 어플리케이션 개발을 위한 표준. 모든 스펙들은 벤터에 의해서 구현되며, 개발자들은 표준 API를 이용하여 개발한다.
- 데이터베이스 처리(JDBC, JTS, JTA)
- JDBC (Java Database Connectivity) : 표준화된 데이터베이스 접근 방법(API)를 제공.
- 비동기 메시지 처리 (JMS)
- 분산 트랜잭션 컴포넌트(EJB)
- 분산 객체(RMI)
- RMI (Remote Method Invocation) : 리모트 상에 존재하는 객체의 메소드를 호출하는 프로토콜.
- 웹 어플리케이션 (Servlet, JSP)
Java 버전
- 많이 쓰는 버전은 8(1.8), 11, 17. (LTS라서)
- LTS(Long Time Support) : 오랜 기간 지원하는 특별한 에디션.
- JAVA 8버전 (1.8버전) : 가장 오래되어 가장 널리 쓰인다. 8버전 전후로 많이 바뀌어서 8버전 밑으로는 안 쓴다.
- JAVA 17버전 : Spring Boot 3.0부터는 자바 17 이상을 지원한다. (스프링 부트를 사용하지 않는 SI, 공공기관 프로젝트에서는 8버전이나 11버전을 많이 쓴다)
Java 가상머신
JDK
JDK (Java Development Kit) : 자바 개발키트
- 특징
- 자바 개발 시 필요한 라이브러리들과 javac, javadoc 등의 개발 도구가 포함되어 있다.
- 자바로 개발하는데 필요한 SDK (Software Development Kit로, 안드로이드 스튜디오 등이 있다)
- JRE가 자바 응용프로그램 실행을 맡으면, JDK는 개발을 맡는다. 컴파일러, 자바 도큐먼트 생성 등의 도구가 포함되어 있다.
- 종류
- Oracle JDK : 오라클사에서 제공하는 JDK. 구독제.
- Open JDK : 무료 JDK. 성능은 좀 떨어지는 편.
- Azul Zulu : 무료 JDK. Mac에서 사용할 수 있는 바이너리를 제공
- Amazon Corretto : AWS에서 제공하는 JDK. AWS가 아니어도 사용 가능.
- Temurin (AdoptOpenJDK) : 이클립스에서 제공하는 JDK.
- 디렉토리 구성요소
- bin : 자바 개발, 실행에 필요한 도구와 유틸리티 명령
- javac : 자바 컴파일러. 자바 소스를 바이트 코드로 컴파일.
- java : 자바 인터프리터. 컴파일러가 생성한 바이트 코드를 해석하고 실행.
- javadoc : 자바 소스로부터 HTML 형식의 API 도큐먼트 생성
- jar : 자바 클래스 파일을 압축한 자바 아카이브 파일(.jar) 생성, 관리하는 압축 프로그램.
- jmod : 자바의 모듈 파일(.jmd)를 만들거나 모듈 파일의 내용을 출력
- jlink : 응용 프로그램에 맞춘 맞춤형 JRE 생성
- jdb : 자바 응용프로그램의 실행 중 오류를 찾는데 사용하는 디버거
- javap : 역어셈블러. 컴파일된 클래스 파일을 원래의 소스로 변환
- include : 네이티브 코드 프로그래밍에 필요한 C언어 헤더 파일
- lib : 실행 시간에 필요한 라이브러리 클래스들
- bin : 자바 개발, 실행에 필요한 도구와 유틸리티 명령
JRE
JRE(Java Runtime Environment) : 자바 실행환경
- 특징
- JVM을 포함한 Java 프로그램 실행에 필요한 라이브러리 API를 묶어 놓은 패키지 (실행은 가능하지만 개발은 불가능)
- 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일(jar)을 가지고 있다
- JDK에 포함되어 있기 때문에, JDK를 설치하면 함께 설치된다.
JVM
JVM(Java Virture Machine) : 자바 가상 머신
- 특징
- 자바를 돌리는 프로그램
- 어느 운영체제에서도 자바가 돌아갈 수 있도록, 운영체제와 자바 프로그램 사이 중계자 역할.
- 자바로 작성된 모든 프로그램은 JVM에서만 실행됭 수 있다. 자바 프로그램 실행을 위해서는 자바 가상 머신이 필수다.
- JRE에 포함되어 있기 때문에, 현재 컴퓨터에 JRE가 설치되어 있다면 JVM도 설치되어 있다는 뜻이다.
- JVM 덕분에 자바는 어느 플랫폼(운영체제)에서도 동작할 수 있다.
진행 순서
- 소스코드(.java)작성
- Javac (자바 컴파일러) : .java 파일(소스코드)을 바이트 코드(JVM이 읽을 수 있는 중간 언어)로 쓰인 .class 파일로 컴파일.
- JVM (Java Virtual Machine, 자바 가상 머신) : javac가 바이트 코드로 변환한 .class 파일을 바이너리 코드로 변환하여 프로그램을 수행.
개발 방식 종류
자바 애플리케이션 (Java application)
JRE(자바 실행환경)이 설치된 모든 환경에서 독립적으로 실행 가능.
자바 애플릿(java applet)
- 자바 자체에 있는 ui를 실행하기 위해 웹 브라우저에서 구동되는 프로그램.
- 웹 브라우저가 애플릿이 포함된 웹 페이지에 접근하면, 서버로부터 애플릿을 클라이언트로 다운로드해 웹 브라우저에서 실행한다.
- 자바 애플리케이션을 통째로 웹 브라우저에 전송해, 자바 가상 머신을 탑재한 웹 브라우저가 이를 실행하도록 했다.
- 속도, 보안, 유연성 등의 한계가 있어서 서블릿 등장 후 잘 사용하지 않는다.
자바 서블릿 (Java Servlet)
- 애플릿과 달리, 웹 서버에서 동작하는 프로그램.
- 동적 웹 페이지 제작을 위한 웹 애플리케이션 프로그래밍 기술.
- java 언어 사용. 서블릿은 자바 파일(.java)를 컴파일한 클래스 파일(.class)의 형태이다.
- JSP는 자바 서블릿을 가지고 만들어진 것.
- 서버가 처리하는 모듈을 서블릿이라고 한다.
- 서블릿은 데이터베이스 연동 등 복잡한 프로그램을 구현해야할 때 사용한다.
- 서블릿 콘테이너 (Servlet Container) : 서블릿들을 담고 있는 상자. 서블릿을 런타임을 한다. 서블릿의 생성, 실행, 삭제를 담당. 대표적으로 아파치 톰캣.
- html 코딩은 JSP가 낫기 때문에, 자바 서블릿은 UI 요소가 없는 제어 용도(MVC 중 Controller) 제작에 자주 쓰인다.
- UI 변수 선언 및 초기화가 선행되어야 한다.
JSP (Java Server Page)
- JSP는 html을 기본으로, 필요한 부분에서만 스크립트 형식으로 java를 사용한다. (서블릿은 java 중심의 코드를 사용해 코딩이 어렵다.)
- 웹 컨테이너가 JSP 파일(.jsp)을 java파일(.java)로 변환 후, 컴파일을 통해 서블릿 파일(.class)로 변환하여 웹 서버에 돌려준다.
- html 기반이어서 출력 결과물을 만들기 용이한 편이라, MVC 중 View를 만들 때 사용.
- 자주 쓰이는 기능을 내장 객체로 제공하여 즉시 사용 가능.
- 서블릿 파일로 컴파일하기 때문에, 서블릿의 기능도 사용 가능.
자바 빈즈 (Java Beans)