자바의 정석 - 자바

jhstudio·2022년 10월 19일
0

자바의정석

목록 보기
1/10
post-thumbnail

자바란

  • 1996년 1월에 썬마이크로시스템즈에서 개발
  • 운영체제에 독립적
  • 객체지향

자바의 역사

  • 처음엔 제임스 고슬링아서 밴 호프가 가전제품에 탑재될 소프트웨어를 만드려함
  • C++를 확장해서 시작했지만 인터넷이 등장하자 C++는 안될거라는것을 꺠달음
  • 1991년오크라는 언어부터 시작
    오크 : 초창기 자바의 이름
  • 1996년 1월자바를 발표
  • 웹에서 사운드, 애니메이션등등 멀티미디어를 활용할 수 있는 Applet이 인기를 누림
  • 플래시의 등장으로 Applet을 안쓰자 Servelt, JSP를 사용

자바언어의 특징

운영체제에 독립적

JVM을 이용해서 여러 운영체제에 사용가능
운영체제별로 JVM 버전이 다르다.

객체지향

상속
캡슐화
다형성

배우기쉽다.

C++에서 스몰톡이라는 객체지향언어를 가져옴

GC

자바는 자동으로 메모리 관리를 하기 때문에 개발자는 코딩만 하면된다.
때로는 이게 비효율적일 수 있음

네트워크와 분산처리

네트워크 프로그래밍 라이브러리가 있어서 생산성이 좋음

멀티쓰레드

운영체제별 멀티쓰레드 동작이 다르고 처리방식이 다르다.
자바는 OS와 상관없이 구현할 수 있다.
여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당한다. (이부분은 따로 다시 봐야할듯)

동적로딩

자바를 실행하면 현재 사용하는 클래스만 실행된다.
컴파일을 할때 변경된 클래스만 컴파일하면 된다. (이부분은 따로 다시 봐야할듯)

JVM

  • 윈도우, 리눅스등등 각 OS별 JVM이 있어야한다.
  • JAVA -> -> JVM -> OS -> 컴퓨터로 실행된다.

JVM실행과정

이미지 참고 : https://medium.com/@lazysoul/jvm-%EC%9D%B4%EB%9E%80-c142b01571f2

.java파일 -> 컴파일러 -> 바이트코드(.class파일) -> JVM영역시작 -> 클래스로더 -> JIT컴파일러 -> 기계어

  • 클래스로더 : .class파일에서 인스턴스가 생성 -> 메모리생성
  • JIT컴파일러 : .class파일에서 메서드실행 -> 기계어변환
    과거엔 Interperter로 한줄씩 번역해서 느렸다.

결국 클래스로더에서 계속 반복된다.

자바 실행과정

  1. javac Hello.java
    java파일을 .class파일로 생성
  2. java Hello
    class파일 실행

    내부동작

    1. .class파일 로드
    2. 클래스파일검색
    3. main(String[] args) 호출
    4. 종료되면 모든 자원 반환 (멀티쓰레드는 모든 쓰레드가 종료되야함)
profile
잡부

0개의 댓글