2016-05-20 14 views
-3

Nach fünfeinhalb Jahren Vollzeit-Arbeit an einem Produkt-Ranking-Engine-Projekt, das sich um ein 64,839-Zeilen-Applet dreht, haben die Browser-Firmen es für angebracht gehalten, Applets auszugeben.Optionen zur Wiederverwendung des vorhandenen Codes eines Applet?

An diesem Punkt bin ich nicht in der Lage, das Applet in eine andere Sprache zu konvertieren (es sei denn, ich bekomme eine riesige Injektion von Mitteln, um ein Team von Programmierern einzustellen). Mein Partner wird mich für weitere zwei Jahre nicht unterstützen.

Ich weiß, die Fragen sind ziemlich vage und ich sollte mit der neuesten Technologie Schritt halten, aber ich habe seit 14 Jahren chronische Ohrenschmerzen, die Gedächtnis und Konzentration beeinflussen, so Programmierung ist schwierig genug, ohne zu versuchen, mitzuhalten neueste Entwicklungen in der Software. Der Grund, warum ich um Rat frage, ist, dass ich keinen weiteren monumentalen Fehler machen möchte.

Frage 1: Ich verstehe, dass Java Web Start startet die Anwendung, aber es kann nicht mehr zurück zur JSF-Webseite kommunizieren (JSF2.0). Gibt es eine Möglichkeit, dies zu umgehen?

Frage 2: Kann jemand andere Optionen vorschlagen als die ganze Sache neu zu kodieren?

Frage 3: Ist es wahrscheinlich, dass Applets geändert werden, um das neueste Plugin-Format zu verwenden, oder sind sie für immer verschwunden? Hat jemand irgendwelche Insiderinformationen dazu?

Überblick über die Anforderungen des Applets:

Das Applet ermöglicht es einem Benutzer einige oder alle das Produkt anpassen Kriterien Ranking, das von einer Gruppe von erfahrenen Experten voreingestellt worden ist, um ihre eigenen speziellen Bedürfnisse. Die Kriterien werden über Graphen gespeichert und bearbeitet (benutzerdefinierte gemalte jPanels).

Das Ranking-Kriterium kann vollständig mit der Maus geändert werden (um die Grafikformen zu ändern), obwohl einige Werte mit der Tastatur eingegeben werden können, wenn der Benutzer dies wünscht. Einmal angepasst, wird das Applet dann verwendet, um die Änderungen an den Ranking-Engine-Server zu senden.

Es wird auch verwendet, um Dritt-Experten zu erlauben, die Ranking-Kriterien zu ändern, um ihre eigenen Produktnutzungskategorie-Ranking-Kriterien zu erstellen. Der Third-Party-Experte kann dann Links auf seiner eigenen Website platzieren, die es Benutzern ermöglichen, Produkte anhand der eigenen Ranking-Kriterien des Drittanbieters zu bewerten. Dies ermöglicht es jedem, seine eigenen Ranking-Kriterien für die Verwendung durch andere zu erstellen. Das Applet verwendet eine Plugin-Bean, die auch in einer eigenständigen Java-Editor-Anwendung verwendet wird, die verwendet wird, um eine Product Usage Ranking Criterion-Datei von Grund auf zu erstellen (der Editor ist 77.710 Zeilen Code, obwohl 61.257 Zeilen davon sind) das Plugin, das auch im Applet verwendet wird). Dies bedeutet höchstwahrscheinlich, dass auch der Editor konvertiert werden muss, da beide untrennbar miteinander verbunden sind. Das Plugin ist im Grunde das Applet und auch der Editor.

Das Plugin kann Rankingkriterien für praktisch alles, was das menschliche Gehirn einstufen kann, erfassen, bearbeiten und speichern. Dank der Graphen kann es jedes Attribut verwenden, das das Gehirn verwendet und für das wir kein formales Messsystem haben; Deshalb ist das Applet so verdammt groß.

+1

Ich weiß, du meinst es gut, aber kochen Sie Ihre Frage auf eine bestimmte Programmierfrage. Sie werden dann viel wahrscheinlicher Antworten bekommen. StackOverflow konzentriert sich auf Programmierfragen, nicht auf Projektmanagement. – 4castle

+0

Vielleicht "HAL" ("es kann jedes Attribut verwenden, das das Gehirn verwendet" - ja, richtig) sollte in den letzten 5,5 Jahren eine Website gelesen haben, um zu wissen, dass diese neue Sache "Websites" die Verarbeitung auf die Serverseite gesetzt haben etwa 1998. – stdunbar

+0

Was ist "JSF"? Wenn Sie [JavaServer Faces] (https://en.wikipedia.org/wiki/JavaServer_Faces) meinen, warum würden Sie JSF verwenden, wenn Ihre App ein [Java Applet] ist (https://en.wikipedia.org/wiki)/Java_applet)? –

Antwort

0

Ihre Frage ist wahrscheinlich zu breit für Stack Overflow, aber ich werde eine kurze Antwort geben.

Java Web Start

Java Web Start ist wahrscheinlich der beste Weg für Sie.Diese Technologie ist im Grunde eine bequeme Möglichkeit für einen Benutzer, eine Java-Desktop-App zu erhalten, zu installieren und auszuführen. Der Webbrowser wird nur verwendet, um zunächst eine kleine XML-Datei herunterzuladen, in der Ihre App beschrieben wird und wo Sie die App erhalten. Die Java Network Launching Protocol (JNLP) definiert diese Informationen, die in dieser XML-Datei gespeichert sind. Ihre App wird von einem Server heruntergeladen und auf dem lokalen Computer gespeichert. A Java Runtime Environment (JRE) kann bei Bedarf heruntergeladen und installiert werden.

Standardmäßig wird die App in einer Sicherheits-Sandbox ausgeführt, die Java-Applets ähnelt. Sie können jedoch Ihre App signieren und Sicherheitsprotokolle definieren, um einige dieser Einschränkungen zu umgehen, einschließlich der Herstellung von Netzwerkverbindungen.

Der Großteil Ihrer Programmierung würde intakt bleiben. Die App ist immer noch reines Java und läuft in einer JVM. Sie müssten ein wenig umprogrammieren, um eine Desktop-App zu sein, anstatt als Applet verpackt zu sein. Und Sie müssten lernen, diese Sandbox-Einschränkungen zu erleichtern. Und Ihre App wird eine eigene Menüleiste als eine vollwertige App haben, so dass Sie vielleicht davon profitieren möchten. Aber der Mut deiner App bleibt bestehen.

Im Laufe der Jahre, Sun & Oracle haben Anstrengungen unternommen, Java Web Start zu verbessern. Leider kam es zu spät, nachdem Java-on-the-Desktop zu viel Verstand verloren hatte. Und Swing bekam nie die Überholung, die sie so dringend benötigte. So ist Java Web Start nie in Mode gekommen. Java Web Start funktioniert jedoch wie angekündigt. Probieren Sie es aus.

Obwohl es vor Jahren einige Sicherheitsprobleme gab, glaube ich, dass sie schon vor langer Zeit gelöst wurden. Die vielen berüchtigten Sicherheitsprobleme mit Java bestanden hauptsächlich darin, dass die Webbrowser-Plugins zwischen Browsern und der Java JRE überbrückten; Diese Probleme haben keinen Einfluss auf Java Web Start (Sie sollten jedoch Ihre eigenen Nachforschungen durchführen, um dies zu bestätigen).

Für die breite Öffentlichkeit ist Java Web Start möglicherweise zu viel, um neue, anonyme und weniger motivierte Benutzer zu fragen. Für ein kommerzielles Produkt mit einer Benutzerbasis von eifrigen Kunden kann es die perfekte Lösung für Sie sein. Ich schlage vor, dass Sie mehr studieren, lesen Sie die Wikipedia page, studieren Sie die Oracle technology page, schauen Sie sich die Tutorial, lesen Sie this overview by John Zukowski, die ein Beispiel für Netzwerk (Herstellen von Socket-Verbindung zu time.nist.gov), und so weiter.

Vaadin

Der Vaadin Framework ist ein Open-Source-free-of-Cost-professionelle User-Interface-Entwicklungs-Framework, die reine Java verwendet Ihre Anwendung auf einem Server in einem Java Servletweb container während automatisch eine Benutzerschnittstelle zu erzeugen laufen Verwendung von Standard-Webtechnologien (HTTP, HTML, CSS, JavaScript, GWT, WebSocket usw.) zur Präsentation in einem normalen Webbrowser (Firefox, Chrome, Safari, IE, Edge usw.). Als Graubart denke ich an Vaadin als X Window System für das neue Jahrtausend: Der Benutzer interagiert mit Bildschirm-Widgets auf seinem lokalen Computer, aber die Geschäftslogik der App wird auf dem Server ausgeführt, und der Server aktualisiert die Remote-Benutzeroberfläche als Ergebnis der Ausführung dieser Geschäftslogik.

Vaadin ist nicht noch ein anderes-Web-Templating-System. Stattdessen ist Ihre App in reinem Java geschrieben. Du musst die Alphabet-Suppe der oben aufgelisteten Web-Technologien nicht lernen. Vaadin kümmert sich automatisch um dich. Sie sagen in Java "Ich möchte ein Label, dann ein Feld und eine Schaltfläche" und Vaadin macht diese im Webbrowser sichtbar.

Mit Vaadin können Sie Ihren Java-Code für den Geschäftslogikteil beibehalten. Aber Sie müssen die Benutzerschnittstellenteile neu schreiben, um Vaadin-Widgets anstelle von Swing-Widgets zu verwenden. Das wäre nicht so schwierig, da Vaadin vom allgemeinen Stil von Swing inspiriert wurde und Layouts definiert hat, die von Layout-Managern gesteuert werden, in denen Sie Ihre verschiedenen Widgets (Felder, Beschriftungen, Schaltflächen usw.) platzieren.

Vaadin kann sehr professionelle Business-orientierte Apps erstellen, die sich fast wie Desktop-Business-Apps anfühlen. Tipp: Ich bevorzuge die Reindeer theme für Business-Apps über die neuere Valo theme.

Sie haben jedoch in Ihrem Swing-Applet eine Art Freihand-Zeichenfläche erwähnt. Das könnte ein Knackpunkt sein. Ich kenne ein solches Widget nicht zur Verwendung in einer Vaadin App. Ich sage nicht, dass es so etwas nicht gibt, ich weiß es einfach nicht. Es gibt Schieberegler-Widgets, die nützlich sein können, aber ich verstehe Ihre Bedürfnisse in dieser Hinsicht nicht klar.

+0

Danke Basil. Ich benutze Webstart bereits, um einen signierten Editor zu starten, also weiß ich davon. Das Problem ist, ist es möglich, dass eine Webstart-Anwendung in Kontakt mit der Webseite bleibt, von der sie gestartet wird? Ich habe noch nichts von Vaadin gehört, ich muss mich darum kümmern. Bezüglich der Graphen passt der Benutzer die Graphenform an, indem er Bieger-Kontrollpunkte und Schlüsselpunkte auf dem Graphen zieht. Es gibt keine Freiformzeichnung. Danke, dass Sie sich die Zeit genommen haben, zu antworten. – Robbie62

+0

@ Robbie62 In Bezug auf die Herstellung von Netzwerkverbindungen ... Ich habe [einen Link zu einem Artikel] (http://www.oracle.com/technetwork/articles/javase/index-135962) hinzugefügt.html) von John Zukowski (Autor von Swing books), der eine Java Web Start-App enthält, die eine Socket-Verbindung zu einem Server über das Internet herstellt (time.nist.gov). –

+0

Vielen Dank Basil ... Ich gebe die SessionID bereits an das Applet weiter, so dass es irgendwie möglich ist, auf diese Weise wieder auf die Webseite zu verlinken. Ich werde es in AWS verwenden, also muss ich auch bestimmen, auf welchen Server ich zurückverweisen soll. Es ist ein guter Anfang, also danke. – Robbie62