Skip to content

Latest commit

 

History

History
118 lines (96 loc) · 5.93 KB

chap01.md

File metadata and controls

118 lines (96 loc) · 5.93 KB

CHAP 01 STUDY

자바란?

  • 현재 컴퓨터 업계에서 가장 많이 사용되는 프로그래밍 언어 중의 하나

  • 방대한 라이브러리와 다양한 실행 환경을 가지고 있는 하나의 거대한 플랫폼

  • 1991 제임스 고슬링을 비롯한 썬 마이크로시스템즈 사의 Green 프로젝트팀이 개발 -> 가정용 전자제품에 사용할 수 있는 컴퓨터 언어를 설계

목적

  • 플랫폼 호환성 문제 해결

    • 기존 언어로 작성된 프로그램은 PC, 유닉스, 메인 프레임 등 플랫폼 간에 호환성 없음
    • 소스를 다시 컴파일하거나 프로그램을 재작성해야하는 단점
  • 플랫폼 독립적인 언어 개발

    • 모든 플랫폼에서 호환성을 갖는 프로그래밍 언어 필요
    • 네트워크, 특히 웹에 최적화된 프로그래밍 언어의 필요성 대두
  • 메모리 사용량이 적고 다양한 플랫폼을 가지는 가전 제품에 적용

특징

  • 플랫폼 독립성
    • 플랫폼 상관없이 어디서든 실행 가능
      • 자바 컴파일러는 자바 언어로 작성된 프로그램을 Byte code라는 특수한 이진파일로 변환
      • JVM(Java Virtual Machine) 이 byte code 실행
  • 객체지향
    • 객체별로 코드 작성 후 객체들을 조합하여 전체 프로그램을 완성하는 프로그램 설계 방법론
    • 객체 지향 기법을 사용하면 이미 작성된 코드를 재사용하기 쉬움
      • 보다 빠르고, 신뢰성 있는 프로그램 만들 수 O
  • 멀티스레딩
    • 여러가지 작업을 동시에 실행
    • 자바는 언어 수준에서 multithreading을 지원

자바 응용의 종류

  • Java Application
    • 독립적으로 실행될 수 있는 일반 응용 프로그램
  • Java applet
    • 웹 브라우저 안에서 실행되는 작은 프로그램
  • Java servlet
    • 웹서버에서 동작하는 서버 모듈로서 클라이언트의 요구를 받아서 그에 대한 처리를 한 후 실행결과를 HTML 문서 형태로 클라이언트 컴퓨터로 전송

안드로이드 애플리케이션

  • 안드로이드 애플리케이션은 자바로 작성
  • 안드로이드 개발자들은 자바의 SE 버전 중 AWT,Swing(그래픽 관련 부분)을 제외한 거의 모든 패키지 사용
  • 효율성 때문에 자체적인 달빅 가상머신 구현

플랫폼 종속성

  • C,C++ 언어는 모두 타겟 컴퓨터의 CPU나 운영체제에 맞춘 코드.
  • 다른 CPU나 운영체제에서 실행하려면 다시 컴파일해야함.

자바의 플랫폼 독립성

  • 그러나 자바 언어로 컴파일 하였을 경우 운영체제나 CPU에 상관없이 실행 가능

자바 프로그램 실행 과정

  1. 자바 컴파일러는 가상 컴퓨터의 기계어인 byte code를 생성
  2. byte code자바 가상 기계(JVM: Java Virtual Machine)이라고 하는 소프트웨어의 이해 한 줄씩 해석되면서 실행.

자바의 종류와 버전

  • 종류

    • Java SE
      • 데스크탑과 서버에서 자바 애플리케이션을 개발, 실행할 수 있게 해주며 임베디드 환경(embedded environment)과 실시간 환경(real-Time environments)도 지원.
    • Java EE
      • Java EE는 기업용 애플리케이션을 개발하는 데 필요한 여러 가지 도구 및 라이브러리를 모아놓은 것
      • 응용 서버, 웹서버, J2EE API, 엔터프라이즈 자바 빈즈(JavaBeans)지원, 자바 서블릿 API 와 JSP 등을 포함.
    • Java ME
      • Java ME는 핸드폰,PDA,TV셋톱박스,프린터와 같은 모바일 기기나 다른 임베디드 장치들에서 실행되는 애플리케이션을 위한 강인하고 유연한 환경을 제공
  • 버전

    • Java SE 8에 추가된 중요한 특징
      • 함수형 프로그래밍 지원
      • 람다식 (Lambda expressions)
      • 작은 가상기계(VM)
    • Java SE 9에 추가된 특징: 모듈화 프로그래밍
      • 모듈화는 직소(jigsaw) 프로젝트의 산물
      • 모듈화의 목적은 자바 응용 프로그램을 만들 때, 마치 직소 퍼즐을 연결하듯이 필요한 모듈만을 묶어서 사용하려는 것.

JDK와 JRE

  • JRE(Java Runtime Environment)
    • JRE는 자바 프로그램을 실행하기 위한 라이브러리, 자바 가상 기계, 기타 컴포넌트들을 제공.
  • JDK(Java Development Kit)
    • JDK는 JRE에 추가로 자바 프로그램을 개발하는데 필요한 컴파일러, 디버거와 같은 명령어행 개발도구를 추가한 것.

Oracle JDK Vs Open JDK

  • Oracle JDK와 Open JDK는 거의 차이X
  • Oracle JDK: 상업용 코드를 판매하는 JDK
  • Open JDK: 공개 소스 기반의 JDK, 오라클은 라이선스가 들어있는 코드를 제외한 자바 설치본을 Open JDK를 통해 배포하고 있음.

JDK의 폴더

  • 기본 설치 폴더 경로는 C:\ProgramFiles\Java가 됨.
  • 디렉터리
    • bin: 컴파일러, 디버거 등의 도구 포함
    • conf: 구성 파일이 저장됨. 개발자가 편집 가능.
    • include: 네이티브 코드 프로그래밍을 지원하는 헤더 파일들. 자바와 c를 동시에 사용하는 프로그램 개발시에 쓰임.
    • jmods: 컴파일된 모듈이 정의되어 있음
    • legal: 저작권, 라이선스 파일이 저장됨.
    • lib: 개발 도구들이 필요로 하는 추가적인 클래스 라이브러리와 지원 파일들.

컴파일

  • 자바 컴파일러는 javac
public class Hello{
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}
  • 다음과 같은 코드를 메모장에 작성 후 cmd 명령어 접근을 통해 실행 가능.
> javac Hello.java 
  • javac를 통해 소스 파일 컴파일하여 클래스 파일로 변환. 그 후 dir에서 Hello.class 파일이 생성된 것을 확인 후 실행 명령어 java를 이용하여 클래스 파일 실행.
> java Hello