2011-10-26 3 views
2

핵심 자바 클래스 패치에 관심이 있습니다. 데이터 유형이 String, Graphics (스윙) 및 일반적으로 lib/rt.jar 인 클래스가 있습니다.커스텀 자바 코어 클래스

  1. 새로운 쓰기 다음 -Xbootclasspath
  2. 로 JVM을 실행, JVM에서 그들을 사용자 정의 클래스를 만들고 다음과 같습니다

    그래서, 그 작업을 수행하는 방법의 몇 나는 그것을 볼 수있는 방법이 있습니다 부트 스트랩 로더있는 것이다 사용자 정의 클래스로 악기 자바 코드

내가 듣고 싶습니다 (이 너무 익숙하지 않은) 사용 에이전트 및로드에 악기 바이트 코드 방법에 관한 당신의 충고/의견, 어쩌면 무엇인가 놓치고있는 Im?

+0

조언 :하지 마세요. 당신은 거의 그것을 후회할 것입니다. – skaffman

+0

가끔은 "남자가해야 할 일을해야 해";) –

답변

3

부트 클래스 경로를 사용하여 이러한 클래스를 변경하면 사용권 계약에 위배 될 수 있습니다. (당신이 우려하는 경우) 바이트 코드를 변경할 수있는 것으로 보입니다.

시스템 클래스를 변경하는 또 다른 방법은 jre/lib/endorsed 디렉토리에 jar를 추가하는 것입니다 (작성해야 함) 다른 jar보다 우선적으로 여기에 아무 것도로드합니다.

String 클래스를 변경하면 -XX:UseCompressedStrings 옵션이 혼동 될 수 있습니다. 변경 사항이있을 때 수행 할 작업을 테스트하려고 할 수 있습니다.

나는이 테스트를 통해 시스템에서 추가 analsis를 얻습니다. 나는 프로덕션 사용을 위해 이러한 클래스를 변경하려고 시도하지 않았습니다.

나는 당신이하려고하는 것이 다른 방법일지도 모른다고 생각하지만, 자세한 것은 말할 것도없이 불가능합니다.

+0

라이센스 문제를 언급 해 주셔서 감사합니다 피터, 나는 그 사실을 몰랐습니다. 긴 이야기를 짧게하기 위해, 모니터링, 프로파일 링 등을 위해로드되는 Java 클래스에 사용자 정의 코드를 주입 ​​/ 계측 할 수 있어야합니다. 내가 사용할 수있는 프로파일 러를 알고 있지만 "행동"프로파일 링을 원합니다 (이 문장이 의미가 있는지 궁금합니다) –

+0

아마도 AOP는 가장 간단한 방법입니다. 이것은 당신을 위해 바이트 코드를 주입합니다. 메소드가 입력/종료 될 때 코드를 삽입 할 수 있습니다. 예 : 그러한 사건들을 기록하기. –

+0

OK, 좋습니다. 나는 그것에 대해 살펴볼 것입니다. 만약 당신이 어떤 추천 장소를 가지고 있다면 (AOP로 깊숙이 들어가는 것 대신에) 시작하는 것이 좋을 것입니다! ** ** 에이전트 **를 통해 이러한 종류의 동작을 수행 할 수 있습니까? –

1

또 다른 옵션은 OpenJDK 소스 코드를 다운로드/체크 아웃하고 수정 내용을 포함하여 직접 빌드하는 것입니다.

하지만 Java라고 부르지 마십시오. 당신이하고있는 일은 실제 상황과 양립 할 수 없을 것입니다.

때때로 "남자의 꼭 무슨 남자의 어쩔 수 없어")

당신은 현명한 움직임을 제안하는 것을하지 않습니다 존 웨인을 인용.


아니, 아니, 아니. HotSpot과 호환되기를 바랍니다.

HotSpot과의 호환성이 충분하지 않습니다. "java"구현에서 Java 상표의 사용을 규율하는 엄격한 규칙이 있습니다. Java STK 테스트를 통과 한 경우에만 구현 Java를 호출 할 수 있습니다.

"호환 가능"은 "호환 가능"과 다른 의미이며 호환 가능 여부에 대한 질문을 무시합니다.

+0

아니요, 아니요, 아니요. HotSpot과 호환되기를 원합니다. 이것이 에이전트에 대한 질문이었습니다. 내 필요에 맞는 * constructional * 제안이 있다면 그 내용을 기쁜 마음으로 듣게 될 것입니다. –

+0

@PavelK - 내 대답을 제대로 읽고 싶다면, ** 건설적인 대답임을 알게 될 것입니다. 힌트 : 첫 번째 문장. –

관련 문제