2010-06-08 5 views
10

일부 Java 클래스에 포함 된 논리를 사용해야합니다. JNI를 찾았지만 프로젝트가 최근에 업데이트 된 것 같지 않습니다.Delphi의 Java 클래스 사용

델파이 기본 응용 프로그램에서 사용할 수 있습니까? 나는 Delphi 2009를 사용합니다.

+0

대략적인 소스 코드의 양은 어느 정도입니까? 자바에서 파스칼로의 번역이 가능한가? 그렇다면 더 좋을 수도 있습니다. –

+0

의료용 이미징 Java 클래스 용이므로 버그를 삽입 할 위험이 없습니다. 물론 Delphi 클래스를 사용하는 것이 가장 좋은 해결책이 될 수 있지만 불행히도 없습니다. DICOM delphi 클래스가 있지만 필요한 것은 DICOM-RT의 전문화이며, Delphi에서는 존재하지 않습니다 (적어도 구현은 찾지 못했습니다). – LaBracca

답변

4

JNI보다 새로운 솔루션은 (Delphi) DLL의 콜백을 지원하는 JNA입니다. 나는 사용하기 쉽다는 것을 알았다. 자바 6

+1

그러나 JNA는 Java 클래스를 호출하거나 "java"가 "기본 항목을 사용"하도록 허용합니까? – LaBracca

+0

네이티브 DLL이 모든 네이티브 윈도우를 열거하기 위해 Java 클래스의 메소드를 호출하는 예제는 https://jna.dev.java.net/#callbacks를 참조하십시오. Delphi DLL이 기존 Java 클래스와 통신하는 데 사용할 수있는 메소드를 등록하도록 확장 될 수 있습니다. – mjn

+1

@mjn JNA는 기본적으로 Java가 일부 원시 코드를 호출하기위한 것이므로 Java 퍼시스턴스가 먼저 실행되어야하며 성능상의 이점이 있어야합니다. OP 질문에 따르면 JNA가 최선의 선택이 아닐 수도 있습니다. –

-2

나는 그것을 매우 의심합니다. 자바 코드가 가상 머신에 의해 실행되는 동안 델파이 코드는 실행 파일로 컴파일됩니다. 따라서 Delphi 코드에서 완전한 가상 머신을 시작하지 않으면 논리를 쉽게 포함 할 방법이 없습니다.

+0

가상 시스템을 한 번만 실행하고 여러 번 호출해야합니다. –

3

j-interop을 시도해 볼 수 있습니다. 내가 채택해야하는 기술은 Java 비즈니스 로직의 COM 래퍼를 작성하고이 COM 서버를 델파이 상호 운용성에서 사용하는 것입니다.

델파이는 COM 서버의 유형 라이브러리를 작성할 수 있으며이 유형 라이브러리를 사용하여 com 서버를 지정할 수 있습니다. 타입 라이브러리는 델파이 코드가 사용할 인터페이스를 공개하는 단순한 서버의 래퍼입니다.

다른 플랫폼 소프트웨어와 통신하기위한 핵심을 "상호 운용성"이라고합니다.

.net 또는 win32에서도이 내용을 찾을 수 있습니다. Tipically 델파이 코드는 win32 (exe 또는 dll)이며, 상호 운용성 솔루션을 사용하여 델파이 객체와 .net 어셈블리 또는 자바 바이트 코드 간의 통신 프로토콜을 구축 할 수 있습니다.

0

델파이 (JNI) 또는 JNA 및 완전히 바이어스 된 응답을위한 Java 네이티브 인터페이스 대신 Java for Delphi은 강력한 유형 코드를 사용하여 Java 및 Delphi 응용 프로그램을 객체 지향 수준에서 상호 운용 할 수 있습니다. 런타임 대신에 컴파일 시간.

+1

답변을 게시 해 주셔서 감사합니다! [Self-Promotion에 대한 FAQ] (http://stackoverflow.com/faq#promotion)를주의 깊게 읽으십시오. 또한 자신의 사이트/제품에 링크 할 때마다 면책 조항을 게시하는 것이 필수적입니다. –

관련 문제