java

1강 자바 시작

getfeelingsfrom 2025. 1. 10. 14:00

프로그래밍 언어

  • 기계어
    • 0 1 : 2진수
    • 컴퓨터의 cpu는 기계어만 이해 가능
  • 어셈블리어 : 니모닉기호와 일대일 대응
  • 고급언어:
    • 사람이 이해하기 쉬움
    • 절차지향& 객체지향

 

컴파일

  • 소스: 프로그래밍 언어로 작성된 텍스트파일
  • 컴파일: 소스 파일을 컴퓨터가 이해할 수 있도록 기계어로 만드는 과정

 

그린프로젝트

  •  플랫폼 호환성 문제 해결
  •  플랫폼 독립적인 언어 개발
  •  메모리 사용량 적고 다양한 플랫폼을 가지는 가전제품에 적용

WORA (working once run anywhere)

  • 한번 작성된 코드는 모든 플랫폼에서 바로 실행
  • 바이트 코드
  • 자바 컴파일러가 자바 소스 프로그램을 컴파일한 기계어
  • 자바 소스 컴파일한 목적 코드
  • cpu에 종속x (cpu에 의해 직접 실행x)
  • JVM(자바가상기계)에서 인터프리터 방식으로 해석
  • 클래스 파일에 저장
  • 디어셈블: 바이트코드-> 텍스트로 변환

 

자바의 개발

  • 바이트 코드를 하나의 실행 파일로 만드는 링크 과정 x
  • main() 메소드 가진 클래스부터 실행

 

 

자바 C/ C++
-       컴파일러가 바로 바이트 코드 생성한 후 링크 과정 x
-       -> 메모리의 용량에 따라 필요한 클래스 파일만 메모리에 올려 실행함으로써 적은 메모리를 가진 어떤 환경에서도 실행 가능
-       바이트 코드는 JVM에서만 실행 가능
-       프로그램 실행 중에 동적 로딩
-       컴파일러가 중간 단계인 목적코드 생성
-       링커가 목적 코드와 라이브러리 연결 -> 실행 가능한 최종 실행 파일 생성
-       정적 라이브러리는 실행 파일에 포함
-       동적 라이브러리는 실행 중에 동적 링크
-       목적코드 파일은 플랫폼에 따라 다름

 

 

JDK JRE
-       자바 응용 개발 환경
-       개발에 필요한 도구 포함
-       자바 실행 환경
-       JVM포함
-       컴파일 된 자바 API들이 들어 있는 모듈 파일

 

  • 자바 API: JDK에 포함된 클래스 라이브러리
  • 자바 패키지
    • 서로 관련된 클래스들을 분류하여 묶어 놓은 것
    • 계층 구조로 되어있음
    • 자바 API 내에 패키지 형태로 제공됨

 

  • 모듈화
    • 작은 크기의 실행 환경 구성
    • 세밀한 모듈화로 자바 응용프로그램이 실행되는데 필요 없는 모듈 배제
    • 하드웨어가 열악한 소형 IoT 장치 지원

 

  • public static void main(String[]args)
  • System.out.println( )

 

  • 서블릿
    • 웹 서버에서 실행되는 자바 프로그램
    • 사용자 인터페이스가 필요없는 응용
    • 웹 서버에 의해 실행 통제 받음

 

  • 자바의 특성
    • 플랫폼 독립성
    • 상속성, 다향성, 캡슐화
    • 클래스로 갭슐화 되어 클래스 내에 모든 변수와 함수를 구현해야한다.
    • 하나의 소스 파일에 여러 클래스를 작성 가능하다.
    • 컴파일된 클래스 파일에는 클래스가 하나만 존재해야한다.
    • 실행코드를 배포한다
    • 관련된 여러 클래스를 묶어 관리하는 패키지 단위를 사용한다
    • 운영체제의 도움 없이 자체적으로
    • 멀티스레드 지원 
    •  가비지 컬렉션
      • 메모리 반환 기능x
      • 메모리 할당 기능 (new)만 존재
      • 가비지: 할당 후 사용x 메모리
      • JVM이 자동으로 가비지 회수
    • 실시간 응용 시스템에 부적합
      • 실행 도중 예측 할 수 없는 시점에 가비지 컬렉션 실행
    • 안전
      • 타입 체크가 매우 엄격
      • 포인터 개념 없음

 

 

'java' 카테고리의 다른 글

5강 상속  (0) 2025.02.26
3강 반복문의 배열 그리고 예외 처리  (0) 2025.02.26
2강 자바 기본 프로그래밍  (0) 2025.01.10