2009-03-24 4 views
4

Java에서 중간 크기 (25k 회선 코드, 25k 회선 테스트) 코드베이스가 있고 CLVM 및 JVM에서 실행되도록 이식하려고합니다.Java를 J로 이식 할 때의 문제 #

파일 시스템이나 OS를 다루는 테스트 유틸리티는 메인 클래스 만 지원합니다. 나머지 코드는 제네릭 컬렉션 API 인 java.util.regex, java.net (URL 또는 URLConnection은 아님), charset 인코딩/디코딩을위한 java.io, 유니 코드 정규화를위한 java.text 및 org.w3c를 광범위하게 사용합니다. XML 조작을위한 dom.

대부분의 코드베이스를 J #과 Java에서 컴파일 할 수 있습니까? 그렇다면 나머지는 포팅 할 수 있습니까?

그렇다면 어떤 종류의 함정에 빠질까요? 사전에

덕분에, 마이크

답변

7

체크 아웃 iKVM을 : http://www.ikvm.net/

그것은 당신이 (특별히 컴파일)를 실행 할 수 있습니다 닷넷 CLR 내부의 자바 코드입니다.

제 동료 중 일부는 Java 코드베이스 1 백만 + 코드 줄을 사용하여 성공적으로 사용했습니다.

+0

darn, where faster faster ;-) –

+0

Jon Skeet이 답변을 게시하기도 전에 이것을 검색하고있었습니다. 하지만 내 Google 기술은 오늘 미안합니다. "compile java to clr"을 검색 한 다음 "java to .net"으로 변경하십시오. 마법의 단어는 없었습니다.)하지만 실제로 +1 한 경험이 있습니다. –

+0

왜 내가 이것을 생각하지 않았습니까? * OP가 CLR에서 실행되기를 원하는 이유에 따라, 이것은 정확하게 티켓 일 수 있습니다. –

4

함정이 같은

  • 아무것도 나를 밖으로 지옥을 깜짝 놀라게한다. 일어날 수있는 정말 미묘한 버그의 수는 엄청납니다.
  • J #은 Java 1.1.4 AFAIK 만 지원합니다 - 작별 인사 제네릭 등
  • Visual Studio 2008은 J #을 지원하지 않습니다. 기본적으로 죽은 프로젝트입니다.

실제로 C#으로 다시 작성하는 것이 더 쉽다는 것을 알 것입니다 (아직 익숙하지 않은 C# 학습 - 기쁨입니다). 다른 .NET 개발자가 코드를 사용하기를 원한다면 "순수한"코드로 훨씬 더 행복 할 것입니다. NET 프로젝트 J #을 사용하는 것보다.

단점은 앞으로도 모든 변경 사항을 두 곳에서 작성해야한다는 것입니다. 확실히 고통 스럽지만 실제로 "정상적인".NET을 사용하는 것이 더 나은 경험이 될 것이라고 생각합니다.

3

Jon이 지적한 것처럼 J #은 꽤 죽었습니다.

IKVM을 사용하여 .NET에서 (정상적인) Java 코드를 실행하는 방법도 있습니다.

관련 문제