문제

최근 질문에서 최근에 묻는 질문에서 나의 간단한 마음의 대답은 Java, JVM에 대한 나의 많은 오해와 코드가 어떻게 컴파일되고 실행되는지에 대한 나의 오해를 강조했다. 이것은 저의 이해를 더 낮은 수준으로 끌어 내고 싶어하는 욕망을 만들어 냈습니다. 조립과 같은 낮은 수준의 이해에 아무런 문제가 없습니다. 바이트 코드와 JVM이 저를 혼란스럽게합니다. 객체 지향 코드가 낮은 수준에서 어떻게 분해 되는가가 나에게 손실됩니다. JVM, Bytecode 및 Java의 하위 레벨 기능에 대해 배우는 방법에 대한 제안이 있는지 궁금했습니다. 내가 무언가에 대한 경험에 대한 손을 믿는 가장 좋은 방법이라고 생각하기 때문에 바인 코드를 직접 작성하고 실행할 수있는 유틸리티가 있습니까? 또한이 주제에 대한 읽기 제안에 감사 할 것입니다.

편집 : 보조 질문. 그래서 나는 일종의 하위 질문이 있습니다. 답은 JVM에 대해 배우는 흥미로운 아이디어, Brainf ** k 또는 Ook와 같은 정말 간단한 언어를 읽을 수있는 것들이 무엇을 읽을 수 있을지에 대해 흥미로운 아이디어를주었습니다 (아마도 개발할 수도 있습니다. 결국 OO를 지원하려면) 바이트 코드로 컴파일 하는가? 좋은 학습 경험이 될까요?

도움이 되었습니까?

해결책

제안 된 독서 : JVM 사양.

당신은 또한 놀고 싶을 수도 있습니다 Bcel - 바이트 코드 조작을위한 다른 라이브러리가 있지만 아마도 가장 잘 알려진 라이브러리 일 것입니다.

다른 팁

그만큼 아파치 Bcel 바이트 코드에서. 클래스 파일을 분석하고 핸드 크래프트 할 수 있습니다.

Javap 기존 .class 파일을 분해 할 수 있습니다. 빠른 테스트 클래스를 제압하여 표지 아래에서 실제로 무슨 일이 일어나고 있는지 이해하는 데 특히 유용합니다.

나는 독서를 통해 배웠다 ASM 튜토리얼 그리고 도서관 자체에 대해 멍청이.

IMHO, ASM은 Becl보다 낫습니다.

BCEL은 컴파일러, 최적화기, 장애물, 코드 생성기 및 분석 도구와 같은 여러 프로젝트에서 이미 성공적으로 사용되고 있습니다. 불행히도 지난 몇 년 동안 많은 개발이 진행되지 않았습니다.. 자유롭게 도와주십시오 ObjectWeb의 ASM 프로젝트를 살펴볼 수 있습니다. - http://jakarta.apache.org/bcel/

JVM 이해를위한 신뢰할 수있는 출처는 하나뿐입니다

Java® Virtual Machine Specification Java SE 7 Edition

http://docs.oracle.com/javase/specs/jvms/se7/html/index.html

Java 가상 머신에 대한 프로그래밍 이 주제에 대한 좋은 책입니다. (공개 : 저자와 함께 일합니다.)

Java/JVM의 아키텍처를 이해하려면 : Wikipedia, Spec 및 소스 코드를 읽으십시오.

객체 지향 코드가 낮은 수준에서 수행되는 방법을 이해하려면 : 상속/다형성/캡슐화와 같은 기능과 같은 기능을 시도하고 모방하십시오.

C에서는 예를 들어 기능 포인터와 중첩 구조의 조합을 통해 위의 것을 달성 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top