위로 아래

Java 특징

자바 특징

  1. 프로그래밍 언어인 동시에, JAVA 언어로 기술된 프로그램 개발 및 실행 소프트웨어.
  2. 객체 지향 언어 OOP
  3. 플랫폼 독립적 : 자바 가상머신 JVM으로 돌아가서 운영체제에 종속적이지 않다
  4. 네트워크 분산처리 지원 : Java API(프로그래밍 라이브러리)를 통해 빠른 개발 가능
  5. 멀티스레딩 지원 : 한 프로세스에서 멀티태스킹 가능
  6. 동적 로딩 :자바로 작성된 애플리케이션 실행 시 필요한 시점에서 필요한 클래스만 로딩하여 실행한다. 일부 클래스가 변경되어도 다시 전체 컴파일을 진행하지 않아도 되며, 수정이 용이
  7. 자동 메모리 관리 : 자바로 작성된 프로그램은 실행 중일 때, 가비지 컬렉터가 자동으로 메모리를 관리해주기 때문에 메모리 관리가 따로 필요 없다.
  8. IDE 종류 : 이클립스, 인텔리제이(intelliJ)
  9. 프레임워크 종류 : 스프링 (spring)
  10. WORA(Write Once, Run Anywhere) : 자바의 표어. 한 번 작성하면 어디서나 실행할 수 있다.

 


Java 종류

자바 종류

  1. Java SE (J2SE, Jave Standard Edition) : 자바 표준 에디션
  2. Java EE (J2EE, Jave Enterprise Edition) : 자바 기업용 에디션. Java SE기반. 웹 프로그래밍 기능 추가(JSP, Servlet, JDBC, JNDI, JTA, EJB 등)
  3. Java ME (J2ME, Jave Micro Edition) : 자바 마이크로 에디션. 모바일 환경 등에서 조그만 가상 머신으로 동작시킬 수 있는 기능과 API 제공. Java SE기반. 임베디드 시스템에 사용.
  4. Java FX : 가볍고 예쁜 그래픽 사용자 인터페이스 (GUI)를 제공하는 에디션. 고성능의 하드웨어 그래픽 가속과 미디어 엔진 API를 제공해주어서 프로그램 성능에 신경써야 하는 분야에서 사용.

J2EE (Java EE 옛이름) : Java TM의 플랫폼 엔터프라이즈(기업) 환경에서 자바를 이용한 어플리케이션 개발을 위한 표준. 모든 스펙들은 벤터에 의해서 구현되며, 개발자들은 표준 API를 이용하여 개발한다.

  1. 데이터베이스 처리(JDBC, JTS, JTA)
    1. JDBC (Java Database Connectivity) : 표준화된 데이터베이스 접근 방법(API)를 제공.
  2. 비동기 메시지 처리 (JMS)
  3. 분산 트랜잭션 컴포넌트(EJB)
  4. 분산 객체(RMI)
    1. RMI (Remote Method Invocation) : 리모트 상에 존재하는 객체의 메소드를 호출하는 프로토콜.
  5. 웹 어플리케이션 (Servlet, JSP)

 

Java 버전 

  1. 많이 쓰는 버전은 8(1.8), 11, 17. (LTS라서)
  2. LTS(Long Time Support) : 오랜 기간 지원하는 특별한 에디션.
  3. JAVA 8버전 (1.8버전) : 가장 오래되어 가장 널리 쓰인다. 8버전 전후로 많이 바뀌어서 8버전 밑으로는 안 쓴다.
  4. JAVA 17버전 : Spring Boot 3.0부터는 자바 17 이상을 지원한다. (스프링 부트를 사용하지 않는 SI, 공공기관 프로젝트에서는 8버전이나 11버전을 많이 쓴다)

 

 


Java 가상머신

JDK

JDK (Java Development Kit) : 자바 개발키트

  1. 특징
    1. 자바 개발 시 필요한 라이브러리들과 javac, javadoc 등의 개발 도구가 포함되어 있다.
    2. 자바로 개발하는데 필요한 SDK (Software Development Kit로, 안드로이드 스튜디오 등이 있다)
    3. JRE가 자바 응용프로그램 실행을 맡으면, JDK는 개발을 맡는다. 컴파일러, 자바 도큐먼트 생성 등의 도구가 포함되어 있다.
  2. 종류
    1. Oracle JDK : 오라클사에서 제공하는 JDK. 구독제.
    2. Open JDK : 무료 JDK. 성능은 좀 떨어지는 편.
    3. Azul Zulu : 무료 JDK. Mac에서 사용할 수 있는 바이너리를 제공
    4. Amazon Corretto : AWS에서 제공하는 JDK. AWS가 아니어도 사용 가능.
    5. Temurin (AdoptOpenJDK) : 이클립스에서 제공하는 JDK.
  3. 디렉토리 구성요소
    1. bin : 자바 개발, 실행에 필요한 도구와 유틸리티 명령
      1. javac : 자바 컴파일러. 자바 소스를 바이트 코드로 컴파일.
      2. java : 자바 인터프리터. 컴파일러가 생성한 바이트 코드를 해석하고 실행.
      3. javadoc : 자바 소스로부터 HTML 형식의 API 도큐먼트 생성
      4. jar : 자바 클래스 파일을 압축한 자바 아카이브 파일(.jar) 생성, 관리하는 압축 프로그램.
      5. jmod : 자바의 모듈 파일(.jmd)를 만들거나 모듈 파일의 내용을 출력
      6. jlink : 응용 프로그램에 맞춘 맞춤형 JRE 생성
      7. jdb : 자바 응용프로그램의 실행 중 오류를 찾는데 사용하는 디버거
      8. javap : 역어셈블러. 컴파일된 클래스 파일을 원래의 소스로 변환
    2. include : 네이티브 코드 프로그래밍에 필요한 C언어 헤더 파일
    3. lib : 실행 시간에 필요한 라이브러리 클래스들

JRE

JRE(Java Runtime Environment) : 자바 실행환경

  1. 특징
    1. JVM을 포함한 Java 프로그램 실행에 필요한 라이브러리 API를 묶어 놓은 패키지 (실행은 가능하지만 개발은 불가능)
    2. 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일(jar)을 가지고 있다
    3. JDK에 포함되어 있기 때문에, JDK를 설치하면 함께 설치된다.

 

JVM

JVM(Java Virture Machine) : 자바 가상 머신

  1. 특징
    1. 자바를 돌리는 프로그램
    2. 어느 운영체제에서도 자바가 돌아갈 수 있도록, 운영체제와 자바 프로그램 사이 중계자 역할.
    3. 자바로 작성된 모든 프로그램은 JVM에서만 실행됭 수 있다. 자바 프로그램 실행을 위해서는 자바 가상 머신이 필수다.
    4. JRE에 포함되어 있기 때문에, 현재 컴퓨터에 JRE가 설치되어 있다면 JVM도 설치되어 있다는 뜻이다.
    5. JVM 덕분에 자바는 어느 플랫폼(운영체제)에서도 동작할 수 있다.

 

진행 순서

  1. 소스코드(.java)작성
  2. Javac (자바 컴파일러) : .java 파일(소스코드)을 바이트 코드(JVM이 읽을 수 있는 중간 언어)로 쓰인 .class 파일로 컴파일.
  3. JVM (Java Virtual Machine, 자바 가상 머신) : javac가 바이트 코드로 변환한 .class 파일을 바이너리 코드로 변환하여 프로그램을 수행.

 

 


개발 방식 종류

자바 애플리케이션 (Java application)

JRE(자바 실행환경)이 설치된 모든 환경에서 독립적으로 실행 가능.

 

자바 애플릿(java applet)

  1. 자바 자체에 있는 ui를 실행하기 위해 웹 브라우저에서 구동되는 프로그램.
  2. 웹 브라우저가 애플릿이 포함된 웹 페이지에 접근하면, 서버로부터 애플릿을 클라이언트로 다운로드해 웹 브라우저에서 실행한다.
  3. 자바 애플리케이션을 통째로 웹 브라우저에 전송해, 자바 가상 머신을 탑재한 웹 브라우저가 이를 실행하도록 했다.
  4. 속도, 보안, 유연성 등의 한계가 있어서 서블릿 등장 후 잘 사용하지 않는다.

 

자바 서블릿 (Java Servlet)

  1. 애플릿과 달리, 웹 서버에서 동작하는 프로그램.
  2. 동적 웹 페이지 제작을 위한 웹 애플리케이션 프로그래밍 기술.
  3. java 언어 사용. 서블릿은 자바 파일(.java)를 컴파일한 클래스 파일(.class)의 형태이다.
  4. JSP는 자바 서블릿을 가지고 만들어진 것. 
  5. 서버가 처리하는 모듈을 서블릿이라고 한다. 
  6. 서블릿은 데이터베이스 연동 등 복잡한 프로그램을 구현해야할 때 사용한다.
  7. 서블릿 콘테이너 (Servlet Container) : 서블릿들을 담고 있는 상자. 서블릿을 런타임을 한다. 서블릿의 생성, 실행, 삭제를 담당. 대표적으로 아파치 톰캣.
  8. html 코딩은 JSP가 낫기 때문에, 자바 서블릿은 UI 요소가 없는 제어 용도(MVC 중 Controller) 제작에 자주 쓰인다.
  9. UI 변수 선언 및 초기화가 선행되어야 한다.

 

JSP (Java Server Page)

  1. JSP는 html을 기본으로, 필요한 부분에서만 스크립트 형식으로 java를 사용한다. (서블릿은 java 중심의 코드를 사용해 코딩이 어렵다.)
  2. 웹 컨테이너가 JSP 파일(.jsp)을 java파일(.java)로 변환 후, 컴파일을 통해 서블릿 파일(.class)로 변환하여 웹 서버에 돌려준다.
  3. html 기반이어서 출력 결과물을 만들기 용이한 편이라, MVC 중 View를 만들 때 사용.
  4. 자주 쓰이는 기능을 내장 객체로 제공하여 즉시 사용 가능.
  5. 서블릿 파일로 컴파일하기 때문에, 서블릿의 기능도 사용 가능.

 

자바 빈즈 (Java Beans)