# C++ und JEE-Anwendungen



## Deadalus (25. Jan 2010)

Hallo,

ich stehe gerade in meinem Projekt vor der Frage, wie ich meine JEE-Anwendung in die bestehende C++ Applikationen integriere. 

Ich schreib einfach mal meine bisherigen Gedanken zu dem Thema auf:


C++ Anwendungen als JEE-Anwendungen realisieren: 
Würde sehr sehr aufwändig werden, zum Teil gar nicht möglich, weil die Anwendungen Echtzeitkritisch sind und die normale JVM sowas nicht kann. Die C++ Anwendungen benutzen außerdem oft das Filesystem und mit JEE ist java.io ja tabu. 
Evtl. könnten einzelne C++ Anwendungen portiert werden aber definitiv nicht alle.

Java Native
Laut dem Buch Enterprise Java Beans 3 sind auch Java Native Schnittstellen für die JEE Tabu

Java Connector API
So wie ich das bisher versrtanden habe, soll die JCA ja Fremdsystemen die Kommunikation mit der JEE ermöglichen. Für alle Anwendungen müsste dann ein Treiber entwickelt werden.

Meine bisherige Taktik wäre folglich alle C++ Anwendungen, bei denen die Möglichkeit besteht neu entwickeln und für den Rest JCA Treiber. 

Was denkt ihr? Ist die JCA dafür überhaupt geeignet? Gibt es andere Alternativen?


----------



## maki (25. Jan 2010)

> C++ Anwendungen als JEE-Anwendungen realisieren:
> Würde sehr sehr aufwändig werden, zum Teil gar nicht möglich, weil die Anwendungen Echtzeitkritisch sind und die normale JVM sowas nicht kann. Die C++ Anwendungen benutzen außerdem oft das Filesystem und mit JEE ist java.io ja tabu.
> Evtl. könnten einzelne C++ Anwendungen portiert werden aber definitiv nicht alle.


"Echtzeitkritisch" heisst in diesem Falle wohl "soft real-time"... echte Realtime gibt es nur auf OS die "harte" RT bieten.
Nur weil die C++ Programme auf Dateien zugreifen muss das nciht richtig bzw. ideal sein.

Du kannst entweder auf JCA setzen, oder du vergisst den JEE App Server und nutzt JNI/JNA, wenn die Geschwindigkeit bei der C-Java Kommunikation keine so große Rolle spielt, bieten sich auch WebServices an.


----------



## Deadalus (25. Jan 2010)

maki hat gesagt.:


> "Echtzeitkritisch" heisst in diesem Falle wohl "soft real-time"... echte Realtime gibt es nur auf OS die "harte" RT bieten.
> Nur weil die C++ Programme auf Dateien zugreifen muss das nciht richtig bzw. ideal sein.



Nein. Es handelt sich zum Teil um C++ Anwendungen die nur auf Linuxsystemen mit RT Kernel laufen.  



maki hat gesagt.:


> Du kannst entweder auf JCA setzen, oder du vergisst den JEE App Server und nutzt JNI/JNA, wenn die Geschwindigkeit bei der C-Java Kommunikation keine so große Rolle spielt, bieten sich auch WebServices an.



JEE ist Pflicht im Rahmen eines geplaneten Architekturumbaus. Deswegen steht ja sogar die komplette Neuimplementierung der C++ Anwendungen im Raum...

Web Services, ja die hatte ich ganz vergessen. Das werd ich auf jeden Fall auch untersuchen. Denke mal, das wäre vom Aufwand noch am geringsten.


----------



## maki (25. Jan 2010)

> Es handelt sich zum Teil um C++ Anwendungen die nur auf Linuxsystemen mit RT Kernel laufen.


Ah, also doch "harte" Echtzeit... 

Für Java & Echtzeit auf entsprechen System git es ein paar Lösungen, klar haben sie ihre Einschränkungen, aber echtzeit JEE? Sag bescheid wenn du was dazu findest


----------



## Deadalus (25. Jan 2010)

Für Java und Echtzeit gibt es Lösungen aber alle mir bekannten sind kommerzieller Natur und erfordern den Einsatz einer neuen JVM. Sowas würden wir wohl nur als letzte Möglichkeit in betracht ziehen. 

Ich würde sagen Portierung dieser Module schließe ich erst mal aus und konzentiere mich auf die JCA und Webservices. Hat irgendjemand schon mal einen JCA Treiber entwickelt? Ist sowas in der Regel sehr schwer, zeitaufwändig?


----------



## Noctarius (25. Jan 2010)

Deadalus hat gesagt.:


> Für Java und Echtzeit gibt es Lösungen aber alle mir bekannten sind kommerzieller Natur und erfordern den Einsatz einer neuen JVM. Sowas würden wir wohl nur als letzte Möglichkeit in betracht ziehen.



Ist auch mein Stand der Dinge. Allerdings sollte jemand der harte Echtzeit braucht ein kommerzielles Produkt nicht abschrecken.


----------

