跳至主要内容

Java Compiler와 JVM




java소스는 Java Compiler(javac)에 의해 바이트 코드로 변환됨
바이트 코드(.class파일)는 JVM에 의해 구동되고 기계어로 변환 된후 실행됨
  • 기계어에서 → 실행까지의 과정을 프로그램에서 Link되었다고 함.
  • Link되었다는 것은 프로그램이 구동되기 위해 필요한 메모리를 로딩하고, 실행될수 있도록 실행 준비를 하고, 실행 결정 및 실행 초기화하는 것.
TPCSCHOOL.com에서 따온 그림


Java compiler

  • JVM이 이해할 수 있는 자바 바이트 코드로 변환
  • 자바 컴파일러는 javac.exe라는 실행 파일로 설치 됨

Java bytecode

  • JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드
  • 확장자는 .class
  • JVM이 설치되어 있으면 운영체제에 별개로 실행 가능

Java Virtual Machine

  • java bytecode를 실행시키는 가상의 machine
  • JVM은 운영체제에 종속적이고, 각 운영체제에 알맞는 JVM을 설치해야 함

JVM의 구성

  • class loader
  • interpreter
  • JIT(Just-In_Time) Compiler
  • Compiler
  • GC(garbage collector)
자바는 동적으로 클래스를 읽어오고, 프로그램이 실행 중인 런타임에 모든 코드가 자바 가상머신과 연결된다.
class loader: 동적으로 클래스를 로딩해준다.
interpreter: 자바 컴파일러에 변환된 자바 바이트 코드를 읽고 해석, dynamic translation이라고도 불리며 프로그램의 실행 속도를 향상시키기 위해 개발됨
JIT Compiler: 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 변환

Reference → 인프런의 Java 프로그램의 실행 구조
              → [http://tcpschool.com/java/java_intro_programming]

评论

此博客中的热门博文

Pandas Plot

pandas.DataFrame.plot.bar import matplotlib.pyplot as plt import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(5, 4).round(1),                   index=['snail', 'pig', 'elephant','rabbit', 'giraffe'],                   columns=pd.Index(['speed', 'lifespan', 'active', 'cuite'],                   name='Genus')) ax = df.plot(kind='bar',figsize=(10,4), rot = 0) plt.show() ==> output in Pycharm

TensorFlow

Anaconda를 이용하여 Tensorflow 설치 Conda환경을 생성 #conda create -n 가상환경 이름 conda create -n tf python=3.6 anaconda 설치된 가상환경 실행 activate tf tf 가상환경에서 tensorflow 설치 pip install tensorflow      TensorFlow 개요 TensorFlow는 dataflow graph로 수학 계산과 데이터의 흐름을 나타낸다. TensorFlow는 dataflow graph를 구성 한 후 session을 생성하여 graph의 일부를 실행한다 Computation Graph TensorFlow 프로그램은 구성 단계 와 실행 단계 로 구성 구성(construction) 단계: 그래프를 조립 실행(execution) 단계: Session을 통해 그래프 연산을 실행 TensorFlow 기본적인 사용법 Argmax 설정한 axis에 따른 가장 큰 값을 가지는 요소의 index를 반환 axis = 0일때 x[0]와 x[1]의 각 요소들을 비교하여 큰 수의 index를 반환하고, axis = 1일때 x[0][]의 요소들 내 큰 수의 index와 x[1][]의 요소들 내 가장 큰 수의 index를 반환 Reshape tf.reshape(tensor, shape, name = None) tensor의 구조를 원하는 shape으로 변환 shape의 한 원소가 -1이라면, 전체 크기가 일정하게 유지되도록 해당 차원의 길이가 자동으로 계산된다. squeeze 차원 중 크기가 1인 차원을 스칼라값으로 바꿔 해당 차원을 제거한다. TensorBoard TensorBard는 TensorFlow에 기록된 로그를 그래프로 시각화시켜 보여주는 도구이다. TensorBoard 실행 tf.summary.FileWriter('log_dir', graph ...