Frage

Wie stellen Sie eine Java-Desktop-Anwendung modular? Wie sollen die Module eingeteilt werden?

War es hilfreich?

Lösung

Als Design-Ziel, Modularität bedeutet, dass Sie eine Anwendung von getrennten Teilen (Modulen) zusammengesetzt haben wollen, wo jeder Teil seinen Verantwortungsbereich und enthält alle betroffenen Klassen mit diesem Bereich (High Zusammenhalt ), und die Kommunikation zwischen diesen Teilen geschieht durch enge, genau definierte und -documented Schnittstellen ( lose Kopplung ).

Sie dies erreichen, indem Sie Ihr Design im Voraus planen und jene planse Anpassung und Refactoring den Code ständig bei der Umsetzung.

Es ist sinnvoll, einen Unterschied zwischen den technischen Modulen wie GUI, Netzwerk-Kommunikation oder DB-Zugriff zu machen (die oft Schichten bilden, obwohl diese unterteilt in mehrere Module sein können) und Domain-Module, die die anwendungsspezifische Logik enthalten, und oft nicht Schichten bilden.

Andere Tipps

Haben Sie einen Blick auf OSGi-Technologien. Jedes Modul der Anwendung (eine so genannte Bündel) ein separates Glas und OSGi kümmert sich um die Auflösung von Abhängigkeiten und dynamischen Laden Bündel CLASSPATHs etc.

Für Desktop-Anwendungen, die ich sehr empfehlen würde bei DA-Launcher Blick von www.dynamicjava.org . Es macht Ihre App SOOO viel einfacher implementieren. Sie haben auch ein paar Dinge wie dynamische JPA, die für jede OSGi App nützlich sind.

Sie meinen, modular wie Eclipse?

Wenn Sie stützen Ihre Java-Desktop-Anwendung auf Eclipse RCP oder NetBeans RCP, werden Sie Modularität erhalten "kostenlos" (fast; -))

Die Antwort auf Ihre Frage hängt wirklich davon ab, was meinten Sie von "modular" .

Es gibt mehrere Ebenen von Bedenken, die Sie berücksichtigen müssen, wenn die Anwendung modular zu machen.

Zunächst einmal müssen Sie prüfen, ob die "Modularität" Sie suchen, ist Architektur modlarity deploymeyment Zeit Modularität oder Laufzeit Modularität .

In jedem Fall jeder aufeinanderfolgenden Ebene alle bisherigen Stufen impliziert.

Für den Anfang - Ihre Anwendung modular zu machen haben Sie von der Architektur zu starten. Trennen Sie Ihre Bedenken in gut sauber geschnittenen Teile definiert, die auch Schnittstellen zur „Außenwelt“ definiert haben. Verwendung von guten Entwurfsmuster und Dependency Injection und Gestaltung für Einheit Testbarkeit einen langen Weg zu gehen hier in Richtung schöne Trennung von Bedenken zu erreichen, dass das Fundament des modularen Bauweise ist.

von kleinem Start aber bedenken das große Bild halten. Wenn etwas größere Brocken (oder Module) Ihres Systems entwerfen sicherstellen, haben sie so wenig überlappende Bereiche wie möglich. Jedes Modul sollte fast keine Annahmen über die Umgebung, die sie in laufen lassen und nur eine einzige Sorge dienen werden. Jegliche Dienstleistungen, die es von seinen Kollegen erfordert sollten ausdrücklich durch externe Initialisierung zur Verfügung gestellt werden (vorzugsweise unter Verwendung von Dependency Injection zum Kleben der Module zusammen in ein Arbeits app).

Wenn Ihre Architektur modular ist, ist es eine einfache Aufgabe, die Belange in ihre eigenen Deployment-Einheiten zu trennen (in Form von Projekte Gläser Bündel Plug-in Erweiterungen oder was auch immer), und Sie können während des Einsatzes zu erhalten, die genaue Funktion legen Sie müssen für die jeweiligen leicht Mischen und Anpassen von verschiedenen Modulen starten Anwendungsinstanz. Das ist, was ich mit Bereitstellungszeit Modularität .

Möchten Sie einen langen Weg zur Einsatzzeit Modularität ermöglicht es Dependency Injection Frameworks wie Guice , Frühling framefork und andere.

Runtime Modularität die Art, wie ich sehe das so etwas wie die Modularität von Eclipse und NetBeans Plugins oder Mozilla-Erweiterungen zur Verfügung gestellt ist, wo Sie die Konfiguration und Ihre Anwendungsmodule nach der Bereitstellung / Installation eingestellt ändern können.

Das bedeutet, eine Art von Architektur und Infrastruktur, die neuen Plug-In / Erweiterungen entweder bei Anwendung der Initialisierung oder dynamisch zur Laufzeit erkennt.

Letzteres bedeutet auch, dass alle Module mit impliziter Annahme bauen sein muss, dass jede Dienstleistung, die ein Modul verwendet leicht an jedem beliebigen Punkt in der Zeit verschwinden kann, die zusätzliche Anstrengungen, um die Robustheit des Codes in dieser volatilen Welt läuft zu gewährleisten.

Ich würde auch Eclipse RCP oder haben einen Blick auf Netbeans RCP empfehlen. Die beiden sind sehr ähnlich. Eine Sache, die sie trennt, ist, dass Eclipse RCP verwendet native GUI-Bibliotheken statt Schaukel, die Netbeans verwendet.

Vor-und Nachteile ist, dass Elcipse vielleicht ein bisschen schneller sein, obwohl Sie mehr beschränkt auf die Art der Kontrollen bietet das Betriebssystem sind. Netbeans verwendet Schwingen, die den meisten Java-Entwickler besser vertraut sein könnte und die Fähigkeit, benutzerdefinierte Steuerelemente sind endlos zu entwickeln.

Es ist eine Weile her, seit ich mit Eclipse RCP so arbeitete ich ist wahrscheinlich falsch über benutzerdefinierte Steuerelemente in Eclipse RCP Entwicklung.

Die Sache, die sie gemeinsam haben, ist, dass die Entwicklungs intelligente und modulare Desktop-Anwendungen macht Spaß und Sie erhalten professionelle Anwendungen suchen in viel kürzerer Zeit!

Viel Glück!

Sie können auch einen Blick auf das Java-Plug-in Framework nehmen,

http://jpf.sourceforge.net/

  

JPF kann erheblich die Modularität verbessern   und Erweiterbarkeit von Java-Systeme   und minimieren Support und Wartung   Kosten.

haben einen Versuch mit Frühling RCP

http://www.springsource.org/spring-rcp

, wenn Ihr GUI Teil der Anwendung zu organisieren ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top