2010-06-08 17 views
10

Ho bisogno di utilizzare la logica contenuta in alcune classi java. Ho trovato JNI, ma quel progetto non sembra aggiornato di recente.Utilizzo di una classe java di Delphi

C'è un modo per usarlo in un'applicazione nativa Delphi? Uso Delphi 2009.

+0

Approssimativamente quanto codice sorgente? la traduzione da Java a Pascal è fattibile? Se è così, potrebbe essere meglio. –

+0

È per le classi java di imaging medicale, non vorrei rischiare di inserire bug. Sicuramente avere lezioni di Delphi sarebbe la soluzione migliore, ma sfortunatamente non ci sono. Ci sono le classi delphi di DICOM, ma quello di cui ho bisogno è una loro specializzazione (DICOM-RT), e quelle che non esistono per Delphi (almeno non ho trovato un'implementazione). – LaBracca

risposta

4

Una soluzione più recente di JNI è JNA, che supporta anche i callback da (Delphi) DLL. L'ho trovato facile da usare.

+1

Ma JNA supporta anche la chiamata di classi java o solo che consente a java di "consumare cose native"? – LaBracca

+0

Vedere https://jna.dev.java.net/#callbacks per un esempio in cui la DLL nativa chiama un metodo nella classe Java per enumerare tutte le finestre native. Questo potrebbe essere esteso ai metodi di registrazione che possono essere usati dalla DLL Delphi per comunicare con le classi Java esistenti. – mjn

+1

@mjn JNA è concepito principalmente per Java per chiamare un codice nativo e richiede innanzitutto l'avvio di un processo Java, con alcune prestazioni pernalistiche. Secondo la domanda OP, JNA potrebbe non essere la scelta migliore. –

-2

Ne dubito molto. Il codice Delphi viene compilato in un eseguibile mentre il codice Java viene eseguito da una macchina virtuale. Quindi, a meno che non avvii una macchina virtuale completa all'interno del codice Delphi, non vedo alcun modo per includere facilmente le logiche.

+0

È necessario avviare la macchina virtuale una volta sola e effettuare più chiamate. –

3

Si potrebbe provare j-interop. La tecnica che dovrei adottare è quella di costruire un wrapper COM della logica di business java e utilizzare questo server COM dall'interoperabilità delphi throught.

Delphi può creare una libreria di tipi di un server COM e è possibile eseguire un'istanza del server com utilizzando questa libreria dei tipi. La libreria dei tipi è semplicemente un wrapper del server, esponendo la sua interfaccia per essere utilizzata dal codice delphi.

La chiave per comunicare con diversi software di piattaforma è detta "interoperabilità".

Potete trovarlo anche in .net contro win32. Tipicamente, il codice delphi è win32 (exe o dll) ed è possibile creare un protocollo di comunicazione tra oggetti delphi e .net assembly o bytecode java utilizzando soluzioni di interoperabilità.

0

In alternativa all'interfaccia Java nativo per Delphi (JNI) o JNA e risposta totalmente polarizzato, Java for Delphi consente applicazioni Java e Delphi per interagire a livello orientato agli oggetti, utilizzando fortemente digitare codice, dove gli errori possono essere rilevati in compilare il tempo anziché in fase di esecuzione.

+1

Grazie per aver postato la tua risposta! Si prega di leggere attentamente le [FAQ sulla promozione di sé] (http://stackoverflow.com/faq#promotion) attentamente. Si noti inoltre che * è * richiesto * di pubblicare un disclaimer ogni volta che si collega al proprio sito/prodotto. –

Problemi correlati