2009-07-21 5 views
6

In Ordnung, so bin ich ein College-Student, der, in der Hochschule, hat sich noch nicht in Richtung einer bestimmten Spezialisierung verzweigt. Ich programmiere seit ich ein junger Teenager war, kenne sicherlich meine Sachen - gut in acht verschiedenen Sprachen sowie Compsci Theorie, etc. Darüber hinaus habe ich etwa vier Jahre Web-Programmierung (PHP hauptsächlich) hinter mir Seit dem Start von Web 2.0 wurde Freelance in diesem Bereich freiberuflich tätig.Abenteuer eines Webprogrammierers in Applicationland (oder, praktische Java-Hilfe benötigt)

Mein Sommer Job jetzt als Praktikant der Art ist eine Anwendung für eine industrielle, nicht Software-Startup zu schreiben. Diese Anwendung wird verwendet, um Produktionslinien und Logistikfluss zu verwalten. Ich habe Java für meine Sprache gewählt, weil ich mich nicht in den Fuß schießen will.

Ich bin vertraut in der Syntax von Java, in seinen Datenstrukturen, Sprachtheorie und so, aber ich habe absolut keine Ahnung, wo ich anfangen soll. Ich kann mir das Programm perfekt vorstellen, ich verstehe das Problem klar und habe die Lösungstheorie genagelt. Ich habe nämlich keine Ahnung, welche Bibliotheken ich benutzen soll und habe Angst, dass sie nicht gut dokumentiert werden.

Hier sind einige Grundzüge dessen, was ich werde machen:

  • Zwei Anwendungen, einem Server und einem Client (von denen es viele Kopien sein).
  • Der Server und die Clients werden natürlich kommunizieren über (ich weiß es nicht).
  • Sowohl der Server als auch der Client Software werden GUIs haben.
  • Die Server-Software muss eine MySQL-Datenbank abfragen.
  • Die Client-Software muss in "live" sein, dh die GUI wird aktualisiert, wenn eine Änderung an der Datenbank vorgenommen wird. Diese ist einer der Gründe, warum es nicht eine Webanwendung sein kann.

Ich bin nicht einmal sicher, ob ein Rahmen für mich richtig ist oder nicht. Ich habe MVC tonnenweise in meiner Web-Freelance-Arbeit eingesetzt, aber ich weiß nicht, wie sich das für Desktop-Anwendungen übersetzen lässt.

Kurz gesagt, ich bin auf der Suche nach den richtigen Bibliotheken für den Job, sowie Ratschläge, ob ich ein Framework verwenden soll (und wenn ja, welches). Vielen Dank.

Antwort

2
  • Java Desktop 6 (JRE)
  • JDBC (built-in in jedem JRE)
  • MySQL JDBC-Treiber (frei herunterladbar)
  • für die Kommunikation haben Sie mehrere Möglichkeiten: RMI (eingebaut) aber diese Tage, die ich empfehlen
    Lernen so etwas wie Java Web Services (JAX-RS)
3

ich empfehle, dass Sie nur eine Web-Anwendung erstellen. Eine Webanwendung kann in dem Sinne "live" sein, dass Sie sie mit AJAX beschreiben. Es wäre viel einfacher, nur eine Sache zu bauen. Wenn Sie auch einen Rich Client haben möchten, müssen Sie die Benutzeroberfläche in einer Technologie erstellen, mit der Sie nicht vertraut sind (wie Swing oder SWT), und den Kommunikationsmechanismus entwerfen/implementieren.

Schauen Sie sich Hibernate (ORM-Tool) und Spring (IoC-Framework). Sie haben eine irgendwie steile Lernkurve, aber sie werden Ihr Leben auf lange Sicht erleichtern. Für den UI-Teil ist JSF vielleicht einfacher für einen Anfänger.

Als letzte Anmerkung, ich denke, Sie haben einen überambitionierten Plan. Was Sie beschreiben, ist kein einfaches Projekt und erfordert Fachwissen mit vielen Technologien. Versuche nicht alles auf einmal zu machen.

0

Nun, das kann so wild wie du dir vorstellen kannst oder du kannst gehen und tun KISS.

Wenn Sie möchten, dass etwas wirklich einfach ist (wie in keine Frameworks zu verwenden): * Auf der Serverseite können Sie RMI verwenden. Diese Serverseite verwendet eine einfache JDBC, um eine Verbindung zu Ihrer MySQL-Datenbank herzustellen. Aber einige haben gesagt, dass dies etwas alt ist. Wenn Sie also funky werden wollen, können Sie JAX-RS ausprobieren, das JSON-Objekte/XML an Ihren Client zurückgeben kann. * Ihr Client kann mithilfe von Swing (vorausgesetzt, Sie entwickeln Desktop) oder Servlet + JSP (vorausgesetzt, Sie entwickeln Webapp) und Herstellen einer Verbindung zu Ihrem Server durch Aufrufen der RMI-Objekte/JSON-Objekte/XML, die vom Server verfügbar gemacht werden.

Wenn Sie möchten, dass es unangenehm wird, was Ihnen bei der Wartbarkeit des Codes hilft, können Sie Spring + Hibernate in diese Anwendung einbinden.

Viel Glück!

0

Bibliotheken?

JDBC für die Datenbank. Vielleicht möchten Sie ORM-Mechanismen wie Hibernate

betrachten Ich würde die Apache Commons Bibliotheken für alle Ihre Dienstprogramm Arbeit (Umgang mit Dateien, IO etc.) empfehlen. Es gibt eine Menge Dinge, die dich davor bewahren, das Rad neu zu erfinden.

Ein Standard-Logging-Framework wie Log4j ermöglicht es Ihnen, sich auf viele verschiedene Arten anzumelden, Ihre Logs zu filtern und einfach in Überwachungslösungen zu stecken.

Sie sagen nicht, ob browserbasierte Lösungen für die Client/Server-GUI akzeptabel sind, und diese Entscheidung wird einen großen Teil der weiteren Architektur vorantreiben.

Wenn Sie sich browserbasierte Lösungen ansehen, dann würde ich eine Erdung in servlets empfehlen, unabhängig davon, welches Framework Sie letztendlich wählen (zweifellos wird hier viel empfohlen).

Zu diesem Zeitpunkt wird es ein großes Projekt. Vielleicht müssen Sie sich darauf konzentrieren, die Grundlagen (Client/Server-Funktionalität) zum Laufen zu bringen und sich später um die GUI kümmern. Ansonsten ist es eine Menge Arbeit (und GUI-Arbeit kann eine enorme Menge an Zeit ziehen).

7

Dies ist ein Sommer Praktikum Job? Um ehrlich zu sein, klingt das eher nach einem großen Projekt, wenn Sie mich fragen. Sie sagen, das Start-up ist nicht softwarebezogen? Wer hat diese Idee? Haben sie eine Vorstellung von der (riesigen) Reichweite, die so etwas mit sich bringen könnte?

Die Geschäft der Software-Entwicklung ist etwas ganz anderes als Sprache Syntax und Bibliotheken. Es geht darum, Anforderungen zu sammeln, eine Spezifikation zu definieren, Code zu schreiben, die Qualität dieses Codes sicherzustellen, ihn testen zu lassen und so weiter. Dies sind keine Dinge, die ein Praktikant vernünftigerweise erwarten sollte.Für so etwas sollten Sie erfahrener beaufsichtigt sein, jemand, von dem Sie lernen können, jemand, der das schon einmal gemacht hat.

Abgesehen davon, dass es einen wirklich guten Grund gibt, würde ich wahrscheinlich eher eine Website als eine Desktop-App machen. Desktop-Apps sind in vielerlei Hinsicht viel komplizierter. Sie müssen sowohl einen Client als auch einen Server codieren. Die Kommunikation ist ein bisschen komplizierter. Sie müssen sich Gedanken über das Problem machen, den Status in mehreren Anwendungen zu erhalten, wie man mit Updates umgeht und so weiter.

Kurz gesagt, es ist eine große Aufgabe. Sogar eine Website ist eine große Aufgabe, aber viele dieser Probleme verschwinden. Du könntest das mit Java machen. Ich habe sicherlich meinen fairen Anteil an Java-Websites codiert, aber PHP könnte eine viel einfachere Wette sein.

Auch Desktop-Entwicklung auf Java ist, nun, Folter. Swing ist (imho) versucht und wahr, aber auch unglaublich schmerzhaft, sich darin zu entwickeln. Andere Desktop-Bibliotheken (zB Netbeans RCP, Eclipse SWT) sind moderner, haben aber andere Eigenheiten.

Desktop Remoting-Bibliotheken gehören Dinge wie Spring Remoting, sogar Web-Services und andere Dinge wie Burlap. Für den Server würde ich entweder Tomcat oder einen Anwendungsserver (Glassfish ist meine bevorzugte Wahl), Servlets und Spring verwenden. Persistenz kann über Hibernate oder Ibatis (oder viele andere Optionen) erfolgen.

Aber ehrlich gesagt ist die Desktop-Option so viel komplexer als eine Web-basierte. Mit PHP + jQuery + MySQL würden Sie wahrscheinlich viel schneller erledigen.

Wenn Sie dies tun, halten Sie es so einfach wie möglich. Versuchen Sie, das absolute Minimum zu definieren, das Sie benötigen, um es zu liefern. Sobald jemand das hat, werden sie eine bessere Vorstellung davon haben, was für sie funktioniert und was nicht. Grundsätzlich ist es einfacher, etwas zu verfeinern, das bereits existiert, oder etwas zu definieren, das nicht existiert.

+1

+1 für die Verwendung von PHP + jQuery + MySQL Bemerkung. Die Verwendung der vertrauten Werkzeuge ist wichtiger als der Erfolg als die Verwendung von Java! – extraneon

+0

Ich war sicher, dass ich Web-Apps absolut ausschließen würde, bevor ich diesen Weg einschlagen würde, basierend auf ihren Projektanforderungen. Vielen Dank für Ihre Bibliotheksvorschläge. Sie haben recht, diese Firma ist klein, so dass sie den Umfang wahrscheinlich nicht kennen. –

0

Nur ein Erbsenzählerei:

Sowohl der Server als auch der Client-Software wird GUIs haben.

Ich rate Ihnen, einen kopflosen (im wahrsten Sinne des Wortes) Server, mit einer Verwaltungs-GUI, kein GUI-Server.