사용자 도구

사이트 도구


wiki:java:java-lecture:1week

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
wiki:java:java-lecture:1week [2021/01/04 20:34]
emblim98
wiki:java:java-lecture:1week [2023/01/13 18:44] (현재)
줄 1: 줄 1:
 ====== JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. ====== ====== JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. ======
-자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 
  
 ===== JVM 이란 무엇인가 ===== ===== JVM 이란 무엇인가 =====
 +   * 기술적 정의 : 코드를 실행하고 해당 코드에 대해 런타임 환경을 제공하는 소프트웨어 프로그램에 대한 사양( Specification )이다.\\
 +   * 일반적 정의 : 자바 프로그램을 실행하는 방법. JVM의 설정을 구성하고, 설정사항에 따라 실행 중에 프로그램 리소스를 관리한다.\\
 +
  
 ===== 컴파일 하는 방법 ===== ===== 컴파일 하는 방법 =====
 +   * 작성한 .java파일의 해당 경로를  찾아가서 javac 명령어에 java클래스 명을 작성한다. ex) javac HelloWorld.java
  
 ===== 실행하는 방법 ===== ===== 실행하는 방법 =====
  
 ===== 바이트코드란 무엇인가 ===== ===== 바이트코드란 무엇인가 =====
 +   * JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미
 +   * 자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불리고 있습니다.
 +   * 자바 바이트 코드의 확장자는 .class이다. 
 +   * 자바 바이트 코드는 자바 가상 머신만 설치되어 있으면, 어떤 운영체제에서도 실행될 수 있다. 
  
 ===== JIT 컴파일러란 무엇이며 어떻게 동작하는지 ===== ===== JIT 컴파일러란 무엇이며 어떻게 동작하는지 =====
 +     * JIT ( Just In Time ) 컴파일러는 바이트코드를 기계어로 변환하여 실행
 +     * 인터프리터의 단점을 보완하는 역할, 반복되는 코드가 있다면 어느 시점에 전체 바이트 코드를 컴파일해 네이티브 코드로 변환한다.
 +     * 이 네이티브 코드는 반복되는 메소드 호출에 사용되어 시스템 성능을 향상시킨다. 
 +
  
 ===== JVM 구성 요소 ===== ===== JVM 구성 요소 =====
 JVM의 3가지 주요 구성 요소 JVM의 3가지 주요 구성 요소
    - 클래스 로더 ( Class Loader )    - 클래스 로더 ( Class Loader )
-     * JAM 구성의 첫 번째 주요 요소이며, +     * JAM 구성의 첫 번째 주요 요소이며, 클래스 파일을 Runtime Data Area에 적재하는 역할을 수행하고, 동적으로 클래스를 로딩한다. 
      * 3 단계       * 3 단계 
        - Loading         - Loading 
줄 50: 줄 61:
  
 ==== Ref ==== ==== Ref ====
-[[https://java.com/en/download/help/techinfo.html|Where can I get technical information about Java?]]\\ +[[https://java.com/en/download/help/techinfo.html|Where can I get technical information about Java?]] \\ 
-[[https://www.java.com/ko/download/help/techinfo.html|Java에 관한 기술 정보는 어디서 확인할 수 있읍니까?]]\\+[[https://www.java.com/ko/download/help/techinfo.html|Java에 관한 기술 정보는 어디서 확인할 수 있읍니까?]] \\ 
 +[[http://www.tcpschool.com/java/java_intro_programming|자바 프로그램의 실행 과정]] \\ 
 +[[https://www.youtube.com/watch?v=QHIWkwxs0AI|JVM ARCHITECTURE]] \\ 
 +[[https://steady-snail.tistory.com/67|JVM 동작원리 및 기본개념]] \\ 
 +[[https://gaemi606.tistory.com/66|자바 가상 머신 JVM(Java Virtual Machine]] \\ 
 + 
 +[[https://blog.naver.com/hsm622/222138523668|https://blog.naver.com/hsm622/222138523668]] \\ 
 +[[https://jeongjin984.github.io/posts/JVM/|https://jeongjin984.github.io/posts/JVM/]] \\ 
 +[[https://github.com/league3236/startJava/blob/master/live_study/week1.md|https://github.com/league3236/startJava/blob/master/live_study/week1.md]] \\ 
 +[[https://sowhat4.tistory.com/61|https://sowhat4.tistory.com/61]] \\ 
 +[[https://github.com/yeo311/java-study-with-whiteship/tree/main/week1|https://github.com/yeo311/java-study-with-whiteship/tree/main/week1]] \\ 
 +[[https://gblee1987.tistory.com/173|https://gblee1987.tistory.com/173]] \\ 
 +[[https://github.com/kksb0831/Practice_project/blob/master/Java_Study_01.md|https://github.com/kksb0831/Practice_project/blob/master/Java_Study_01.md]] \\ 
 +[[https://jul-liet.tistory.com/143|https://jul-liet.tistory.com/143]] \\ 
 +[[https://hoooooooooooooop.tistory.com/entry/javahalle1|https://hoooooooooooooop.tistory.com/entry/javahalle1]] \\ 
 +[[https://velog.io/@jaden_94/1%EC%A3%BC%EC%B0%A8-%ED%95%AD%ED%95%B4%EC%9D%BC%EC%A7%80|https://velog.io/@jaden_94/1%EC%A3%BC%EC%B0%A8-%ED%95%AD%ED%95%B4%EC%9D%BC%EC%A7%80]] \\ 
 +[[https://catch-me-java.tistory.com/9|https://catch-me-java.tistory.com/9]] \\ 
 +[[https://catch-me-java.tistory.com/10|https://catch-me-java.tistory.com/10]] \\ 
 +[[https://catch-me-java.tistory.com/11|https://catch-me-java.tistory.com/11]] \\ 
 +[[https://catch-me-java.tistory.com/12?category=438116|https://catch-me-java.tistory.com/12?category=438116]] \\ 
 +[[https://catch-me-java.tistory.com/13|https://catch-me-java.tistory.com/13]] \\ 
 +[[https://docs.google.com/presentation/d/1nTUGhSAQJnlcYTdyH4GXjHQq9w1vFByqAdG71Fbnesc/edit?usp=sharing|https://docs.google.com/presentation/d/1nTUGhSAQJnlcYTdyH4GXjHQq9w1vFByqAdG71Fbnesc/edit?usp=sharing]] \\ 
 +[[https://blog.naver.com/baekseongsa/222139174854|https://blog.naver.com/baekseongsa/222139174854]] \\ 
 +[[https://blog.naver.com/baekseongsa/222144525963|https://blog.naver.com/baekseongsa/222144525963]] \\ 
 +[[https://blog.naver.com/baekseongsa/222144528643|https://blog.naver.com/baekseongsa/222144528643]] \\ 
 +[[https://github.com/kyu9/WS_Study/blob/master/week1/day1.md|https://github.com/kyu9/WS_Study/blob/master/week1/day1.md]] \\ 
 +[[https://www.notion.so/1-01b08b753f0c4e93b16a96101c75d382|https://www.notion.so/1-01b08b753f0c4e93b16a96101c75d382]] \\ 
 +[[https://blog.naver.com/haena910/222150168303|https://blog.naver.com/haena910/222150168303]] \\ 
 +[[https://github.com/Jason-time/java_study_with_whiteship/blob/main/week01.md|https://github.com/Jason-time/java_study_with_whiteship/blob/main/week01.md]] \\ 
 +[[https://gintrie.tistory.com/61|https://gintrie.tistory.com/61]] \\ 
 + 
 +{{tag>jvm}}
/volume1/web/dokuwiki/data/attic/wiki/java/java-lecture/1week.1609760057.txt.gz · 마지막으로 수정됨: 2022/03/10 19:52 (바깥 편집)