Techniken: C++/Corba und J2EE



  • Hallo,

    ich bin auf der Suche nach einem C++ Gegenstück zu J2EE. Zur Zeit erlebt Java dank der diversen J2EE Application-Server einen großen Erfolg. Da nun auch unsere Firma sich dazu entschließen musste Lösungen auf Basis von J2EE und Application-Servern anzubieten, stellt sich mir die Frage: Muss es unbedingt Java sein? Wobei es mir weniger um Java geht, als vielmehr den Grund für den Erfolg zu verstehen.

    Was spricht für einen J2EE App-Server? Wodruch zeichnet sich der "große" Erfolg aus? Liegt es einfach an der etwas "leichteren" und dadurch weniger Fehleranfälligen Programmierung?

    Was spricht gegen Lösungen auf Basis von C++ und Corba?

    Mich würden diverse Meinungen zu diesem Thema interessieren, die NICHT am Ende auf C++ vs. Java hinaus laufen. Bitte einfach nur die Techniken/Vor- und Nachteile von J2EE und C++/Corba diskutieren.

    Wäre über feedback dankabar.



  • Bernd34 schrieb:

    Was spricht gegen Lösungen auf Basis von C++ und Corba?

    Z.B. das es zwar einen CORBA 3-Standard (mit CORBA Komponentenmodell) gibt, aber bisher keine vollständige Implementation davon. D.h. du kannst zwar immer lesen wie toll und flexibel CORBA-Komponenten und ihr "Deployment" ist, aber wenn du dann aber wirklich programmieren willst, sieht die Welt längst nicht mehr so rosig aus.



  • Hem, muß man bei C++ Corba nehmen? Meiner Meinung nach, fährt man heute und in Zukunft am besten mit XML-WebServices. Das wird offiziell von allen großen der Branche, wie IBM, MS, SUN usw., favorisiert. Da ist es dann auch völlig schnuppe, in welcher Sprache der Client und Server programmiert sind. Da kann ein .NET-Client mit einem J2EE-Server kommunizieren. Ein C++-Client mit einem .NET-Server kommunizieren.

    Apache AXIS gibts z.B. sowohl für Java als auch für C++. Wenn man also für C++ überhaupt was machen will, zum Null-Tarif: http://ws.apache.org/axis/

    Ansonst hat ja noch MS sein XML-WebServices für ManagedC++ bzw. für C++/CLI. Die ganzen Tools sind schon fix und fertig im VC++2003 Standard mit bei.

    J2EE ist also nur noch eine Enterprise-Platform von vielen. Mit C++ kann man ebenfalls sowas machen. Entweder Corba oder das zukunftsichere XML-WebServices.

    Achja, wegen dem J2EE-Erfolg: SUN und die Apache-Community haben halt J2EE extrem gepusht. Aber wenn man J2EE mit RMI benutzt, kann J2EE halt nur mit Java-Clients kommunizieren. Deshalb schwenken ja auch die Java-Fans auf XML-WebServices um.



  • Danke. Ok, daß würde gegen Corba sprechen. Aber wodurch zeichnet sich der Erfolg von J2EE aus? Ich bin ja nicht unbedingt an Corba gebunden, es gibt durchaus Alternativen.



  • Hallo Artchi. Du scheinst dich damit schon einmal auseinander gesetzt zu haben. Du befürwortest XML-Webservices und hast auch gute Gründe dafür aufgezeigt.

    Hast Du Erfahrungen mit J2EE als Plattform? Kennst du Gründe für den Erfolg von J2EE?

    Danke und Gruß

    Bernd



  • Ich arbeite hier mit dem IBM WebSphere Application Server (WAS) und entwickel neben einem Java-Client den dazugehören WebService auf dem WAS, alles in Java halt. Im Prinzip hat J2EE doch nur deshalb so einen Erfolg, weil Java in den Unternehmen so beliebt ist, die ganze Inhouse-Entwicklungen werden in Java gemacht. IBM, SUN, SAP u.a. pushen Java ohne Ende. Das bekommt der normale Anwender da draussen nicht mit. Und Apache plus Tomcats JavaContainer ist auch noch ein kostenloser Enterprise-Server plus dem kostenlosen J2EE-SKD von SUN... warum soll das kein Erfolg sein? Dann ist Java noch eine einfache Programmiersprache - perfekt!

    Die anderen haben halt geschlafen, mehr nicht. MS hat daraufhin mit .NET gecontert und haben AUSNAHMSWEISE mal bei einem W3C-Standard mitgemacht, nämlich XML-WebService. Man höre und staune: in Kooperation mit IBM! 😃

    SUN schwenkt auch auf XML-WebServices um. Corba hat meiner Meinung nach keine große Zukunft.



  • J2EE ist ne Plattform mit nem Application-Server!

    D.h. Dir steht ein Komplettes Framework zur Verfügung, dass sich um die ganze Infrastruktur kümmert (z.B. erstellen neuer Threads bei neuer Anfragen etc.).

    CORBA ist 'nur' eine Technologie für verteilte Objekte.

    CORBA ist also ne Technologie, mit der Du nen Application-Server programmieren kannst, es ist aber keine fertige Plattform. J2EE ist also eine oder 2 Abstraktionsstufen höher als CORBA (und J2EE basiert m.W. sogar auf einer CORBA-ähnlichen Technologie) (Das ganze ist wie bei .NET auch: .NET ist die Plattform, SOAP die Technologie auf der das ganze basiert).

    Es gibt imho auch Application-Server für C++. Aber keine so bekannten (und hab auf die Schnelle auch nix gefunden.

    Ihr müsst Euch also überlegen:

    Braucht ihr 'nur' verteilte Objekte? Dann könnt ihr CORBA oder SOAP (=Web-Services) nehmen.
    Wollt Ihr einen ganzen Framework (das ist dann auch eine Richtlinie, wie die Applikationen zu programmieren sind etc., dann J2EE oder .NET (oder irgendwas anderes, falls Ihr was findet).



  • Naja, J2EE hat ja auch die ganzen Technologien drin. Nur, damals wurde halt J2EE hauptsächlich für RMI benutzt, habe ich hier die Erfahrung gemacht.

    OK, aber prinzipiell wollte ich nur sagen, das der Trend zu XML-WebServices geht.



  • Artchi schrieb:

    IBM, SUN, SAP u.a. pushen Java ohne Ende.

    Oracle nicht zu vergessen... 😉

    Ansonsten kann ich mich Artchi nur anschließen.



  • Bernd34 schrieb:

    Hallo,

    ich bin auf der Suche nach einem C++ Gegenstück zu J2EE.
    [...]
    Was spricht gegen Lösungen auf Basis von C++ und Corba?

    Mich würden diverse Meinungen zu diesem Thema interessieren, die NICHT am Ende auf C++ vs. Java hinaus laufen. Bitte einfach nur die Techniken/Vor- und Nachteile von J2EE und C++/Corba diskutieren.

    Wäre über feedback dankabar.

    Hier haste Dein C++ Gegenstück zu J2EE:
    http://www.cs.wustl.edu/~schmidt/ACE.html

    Hier Dein C++/CORBA im Vergleich:
    http://www.cs.wustl.edu/~schmidt/TAO.html

    cu
    P84



  • Artchi schrieb:

    Ich arbeite hier mit dem IBM WebSphere Application Server (WAS) und entwickel neben einem Java-Client den dazugehören WebService auf dem WAS, alles in Java halt.

    Danke. Wenn ich mal fragen darf, gibt es Gründe warum ihr den WAS verwendet? Also benutzt ihr den WAS mit anderen Komponenten von IBM wie z.B. DB2 und co.?

    Nach längerer Überlegung habe ich auch mittlerweile die Vorteile von J2EE gesehen. Den größten sehe ich allerdings darin, dass die "Großen" Java pushen.

    Eine weitere Frage: Wenn ihr als Projektmanager oder Consultant die Entscheidung treffen müsstet, würdet ihr das ganze in Java oder in C++ entwickeln?

    Nochmals dank an alle!



  • Bernd34 schrieb:

    Danke. Wenn ich mal fragen darf, gibt es Gründe warum ihr den WAS verwendet? Also benutzt ihr den WAS mit anderen Komponenten von IBM wie z.B. DB2 und co.?

    Da unser Kunde auch IBM-Mainframes hat, wo unter anderem auch DB2 drauf laufen, war halt der Einsatz vom WAS eher eine politische Entscheidung. Ob die OpenSource-Application-Server besser sind, weiß ich nicht. Die sollen aber laut diversen Berichten aber bei WebServices nicht so flott sein, wie die kommerziellen Produkte.

    Bernd34 schrieb:

    Eine weitere Frage: Wenn ihr als Projektmanager oder Consultant die Entscheidung treffen müsstet, würdet ihr das ganze in Java oder in C++ entwickeln?

    Natives C++ würde ich nicht machen, weil das zu wenige machen. Wenn dann eher ManagedC++ bzw. C++/CLI, da hat man nach 1 Min. einen HelloWorld-WebService. Das kann man schon mit der Standard-Edition von VC++ 2003 machen, neues WebService-Projekt anlegen und fertig ist der WebService:

    #include "stdafx.h"
    #include "TestWSClass.h"
    #include "Global.asax.h"
    
    namespace TestWS
    {
    // WEBDIENSTBEISPIEL
    // Der Beispieldienst HelloWorld() gibt die Zeichenfolge "Hello, World!" zurück.
    // Um den Webdienst zu testen, stellen Sie sicher, dass die .asmx-Datei im Weitergabepfad in den
    // Projekteigenschaften als Debug-HTTP URL festgelegt ist,
    // und drücken Sie die F5-Taste.
    
        String __gc* TestWSClass::HelloWorld()
        {
    	// TODO: Fügen Sie hier die Implementierung Ihres Webdienstes hinzu
    	return S"Hello World!";
        }
    
    };
    

    Wenn ein Client die Service-Funktion HellWorld() aufruft (egal ob der Client in Java, C++ oder .NET programmiert ist) bekommt er den String "Hello World!" zurück. Einfacher get es nicht! 😃

    Ich würde aber auf C++/CLI 2.0 warten, weil da die Syntax schöner ist (ab VC++ 2005). Die aktuelle C++/CLI 1.0 Syntax funktioniert zwar, ist aber nicht so schön. 😉

    Ansonst halt Java, da kann ich aber keine Empfehlung für einen bestimmten ApplServer geben. IBMs WAS ist sehr teuer, aber funktioniert gut und ähnlich einfach dem .NET-Beispiel von oben. Wenn auch mehr Steps nötig sind als bei .NET. Mit anderen Java-ApplServern habe ich keine Erfahrung gemacht, mit OpenSource muß man natürlich mehr mit Scripts und Konsole arbeiten. Bei WAS und VC++ reichen ein paar Mouseclicks. (bei VC++ praktisch nur einer)

    Ich würde es einfach mal ausprobieren. Wenn du VC++ 2003 Standard hast, kannste das ja sofort mal ausprobieren.


Anmelden zum Antworten