37414
Goto Top

Programm in Java immer langsam?

Hallo,

zunächst mal: Ich bin kein Programmierer face-wink

Wir haben nun ein neues Programm, welches Antragsdaten verarbeitet.
Ebenso werden damit Auszahlungen an Banken realisiert und es muss viele Fotos im Tiff-Format anzeigen...
Das Programm greift auf eine Datenbank zu, in der ca. 80.000 Anträge gespeichert sind.

Dieses Programm wurde von einer Firma in JAVA programmiert.

Wir stellen nun fest, dass vor allem die Anzeige der Tiff-Fotos unglaublich lahm ist.
Ebenso fehlt eine Lupenfunktion, bzw. eine Funktion, bei der man über Thumbnails schon auswählen kann, welches Foto man sehen möchte.
Im Moment müssen wir (wenn in einem Antrag 30 Fotos vorhanden sind) kompliziert jedes Foto durchklicken, um zum gewünschten Foto zu kommen.
Dabei ist es mega nervig, wenn jedes Foto 1-2 Sek. dauert, bis es angezeigt wird.
Zusätzlich sollte man die dann vergrößerte Anzeige in einem Fenster einfach größer ziehen können (quasi Lupenvergrößerung).

Die Programmierer behaupten, dass die Programmierung einer solchen Lupenfunktion PLUS sehr aufwendig sei...

Meine Fragen sind nun, ob ein in JAVA programmiertes (recht umfangreiches) Programm grundsätzlich recht "lahm" ist und ob die Programmierung einer wie oben beschriebenen Lupenfunktion PLUS tatsächlich so aufwendig ist?

Danke und Gruss,
imebro

Content-ID: 302984

Url: https://administrator.de/contentid/302984

Ausgedruckt am: 25.11.2024 um 01:11 Uhr

114757
114757 27.04.2016 aktualisiert um 09:46:59 Uhr
Goto Top
Moin.
Java-GUIs waren schon immer grotten lahm, schon zu Zeiten meiner Ausbildung vor 20 Jahren war das so. Viel geändert hat sich da nicht, gerade bei der Bildverarbeitung reißt du damit nüscht.
Das gilt jetzt nur für die GUIs, in anderen Bereichen übertrifft Java andere Sprachen sogar um Längen, z.B. auch PHP.

Du bezahlst den Preis für Platformunabhängigkeit, aber heutzutage geht man eher dazu über das ganze als Webanwendungen zu bauen ohne das verbuggte Java-Swing-Gedöns.

Gruß jodel32
127944
127944 27.04.2016 um 09:12:24 Uhr
Goto Top
Moin,

Zitat von @37414:
Wir stellen nun fest, dass vor allem die Anzeige der Tiff-Fotos unglaublich lahm ist.
Wenn das echte Tiff sind, wird man daran nichts ändern können. Tiff Dateien werden ohne Komprimierung gespeichert. Das Laden und Anzeigen solcher Dateien dauert.
114757
114757 27.04.2016 um 09:37:19 Uhr
Goto Top
Zitat von @127944:
Tiff Dateien werden ohne Komprimierung gespeichert.
Nicht generell, Tiffs kennen auch Komprimierung LZW/Deflate.
127944
127944 27.04.2016 um 09:41:25 Uhr
Goto Top
Zitat von @114757:
Nicht generell, Tiffs kennen auch Komprimierung LZW/Deflate.
Stimmt. Habe ein falsches Wort benutzt. Verlustfrei wäre richtig gewesen. "Witzigerweise" lassen sich auch JPEGs in Tiffs einbinden. Aber das führt dann doch am Thema vorbei face-smile
Dirmhirn
Dirmhirn 27.04.2016 um 10:37:33 Uhr
Goto Top
Hi,

Die Programmierer behaupten, dass die Programmierung einer solchen Lupenfunktion PLUS sehr aufwendig sei...
naja würdet ihr für eine "einfache" Erweiterung noch mal zahlen? Wenn man sogar argumentieren könnte, dass das eine essentielle Funktion (Thumbnailvorschau) ist die man bei einer Software diesen(?!) Umfanges erwarten könnte.

Das Problem ist halt wenn du zu einer anderen Firma gehst, werden die mal sagen öhhm pff haben wir ja nicht programmiert. Dann kannst du nur hoffen, dass die erste Firma sauber programmiert hat...

1-2 Sekunden für ein TIFF, naja wie groß sind die Dateien - Miniportraits oder detailierte Röntgenbilder? ev. liegt das Problem ja auch an der Datenbankanbindung/Netzwerk. Hier könnt man die Dateien aber ggf. auch im Hintergrund laden.

btw. SWING ist nicht mehr die einzige Möglichkeit - JavaFX. Eclipse ist auch nicht mehr so lahm wie früher (auch weil die Hardware besser wurde) und bei Eclipse könnte man auch von einem "umfangreichen" Projekt sprechen.

sg Dirm
37414
37414 27.04.2016 aktualisiert um 10:50:05 Uhr
Goto Top
Danke Euch für Eure Tipps und Aussagen bisher...

Bedenkt aber bitte, dass ich kein Programmierer bin und verschiede Eurer Aussagen nicht verstehe.

Z.B...... was ist "LZW/Deflate"?

Oder... was bedeutet die Aussage von Dirmhirn -> "JavaFX", Eclipse, SWING etc.?

Gäbe es also eine Möglichkeit, die Anzeigen der Fotos zu beschleunigen?
Es handelt sich ausschließlich um Papierdokumente (Schreiben, Bescheide, Kostenvoranschläge von Firmen, Steuersachen etc.).

Wäre die Darstellung - z.B. als JPG oder gar GIF oder sonst was sinnvoller, da schneller statt Tiff?
Und wäre die Programmierung der von mir beschriebenen Lupenfunktion PLUS (mit Thumbnails und Fenstervergrößerung) wirklich soooo aufwendig?

Danke und Gruss,
imebro
127944
127944 27.04.2016 um 11:00:56 Uhr
Goto Top
Zitat von @37414:
Gäbe es also eine Möglichkeit, die Anzeigen der Fotos zu beschleunigen?
Durchaus möglich. Ohne Hintergrundwissen zur Software kann man da keine Aussage machen

Es handelt sich ausschließlich um Papierdokumente (Schreiben, Bescheide, Kostenvoranschläge von Firmen, Steuersachen etc.).
Was auf den Bildern zu sehen ist, ist relativ uninteressant. Die Größe der Bilder (der Platz, den die Bilder auf der Platte verbrauchen) ist relevant.

Wäre die Darstellung - z.B. als JPG oder gar GIF oder sonst was sinnvoller, da schneller statt Tiff?
Mit beispielsweise Jpg kann man die Zeit, die man zum überragen der Dateien innerhalb des Netzwerkes benötigt, verkürzen. Ob das Format allerdings die Vorgaben für die Dokumentenablage einhält, darf bezweifelt werden

Und wäre die Programmierung der von mir beschriebenen Lupenfunktion PLUS (mit Thumbnails und Fenstervergrößerung) wirklich soooo aufwendig?
Das kann keiner, der den Code des Programmes nicht gesehen hat, beurteilen.
37414
37414 27.04.2016 um 11:43:02 Uhr
Goto Top
OK...

Bei einem Tiff-Dokument mit 20 Seiten, kommen z.B. hier mal 17 MB zusammen.
Ebenso aber können 5 Seiten auch nur 350 kb groß sein...

Ich denke nicht, dass die eingescannten Dokumente bestimmte Vorgaben für die Dokumentenablage einhalten müssen.
Es sind keine für die Buchhaltung, sondern nur zur Erfassung. Mit diesen Dokumenten müssen die Sachbearbeiter einfach nur arbeiten.

LG
imebro
TheJoker2305
TheJoker2305 27.04.2016 um 13:21:50 Uhr
Goto Top
Hallo zusammen,

das Laden der Daten könnte zumindest beschleunigt werden, wenn die Applikation bzw. der Speicherort der TIFF Dateien auf einer SSD liegt.

Oder sind die TIFF Dateien direkt in der Datenbank gespeichert?

Gruß thejoker2305
37414
37414 27.04.2016 aktualisiert um 13:30:40 Uhr
Goto Top
Die Tiff-Dateien liegen auf unserem Dateiserver in einem für alle freigegebenen Verzeichnis.
In diesem Verzeichnis liegt auch die Datenbank des Programms.
Ich kann - wenn ich den Serverpfad öffne - die einzelnen Tiff-Dateien sehen und auch von dort aus öffnen.
Übrigens geht es auf diese Weise auch sehr schnell... auch das durchklicken durch die einzelnen Fotos innerhalb einer Tiff-Datei.
Offenbar verlangsamt also das Programm selbst die Ansicht und nicht unbedingt das Netzwerk (jedenfalls wäre so meine Schlußfolgerung) face-smile

Jeder Rechner greift also über das Netzwerk auf das gemappte Laufwerk zu, um dann über das Programm die Tiff-Dateien anschauen zu können.

LG
imebro
127944
127944 27.04.2016 um 13:37:06 Uhr
Goto Top
Zitat von @37414:
Offenbar verlangsamt also das Programm selbst die Ansicht und nicht unbedingt das Netzwerk (jedenfalls wäre so meine Schlußfolgerung) face-smile
Diese Schlussfolgerung ist richtig
37414
37414 27.04.2016 um 14:40:19 Uhr
Goto Top
OK...

Habt Ihr Tipps, die man den Programmierern weiterleiten könnten? face-wink
Was könnte man besser machen?

Danke und Gruss,
imebro
TheJoker2305
TheJoker2305 27.04.2016 um 16:41:05 Uhr
Goto Top
 try 
    { 
    Process p = Runtime.getRuntime().exec("gimp \\server\files\foto1.tiff");  
    }
	catch(IOException e)
	{
    	e.printStackTrace();
        }

Aber ich denke das sollten die Java-Entwickler besser wissen face-smile

Gruß
thejoker2305
37414
37414 28.04.2016 um 08:02:54 Uhr
Goto Top
Danke... aber was bedeutet dieser Code, bzw. was kann sich dadurch ändern?

LG
imebro
127944
127944 28.04.2016 um 08:06:56 Uhr
Goto Top
Zitat von @37414:
bzw. was kann sich dadurch ändern?
nichts. Da wollte nur jemand, der den Thread nicht gelesen oder verstanden hat, zeigen, das er auch irgendetwas weiß.
37414
37414 28.04.2016 um 08:39:56 Uhr
Goto Top
schade face-wink

Welche Tipps könnte ich denn tatsächlich weitergeben?
Wie ja gestern schon herausgefunden, liegt es ja nicht am Tiff-Format der Fotos und auch nicht an unserem Netzwerk, sondern klar am in Java programmierten Programm.

Wäre schön, wenn Ihr mir da nochmal weiterhelfen könntet...

LG
imebro
114757
114757 28.04.2016 aktualisiert um 08:42:38 Uhr
Goto Top
Zitat von @37414:
Oder... was bedeutet die Aussage von Dirmhirn -> "JavaFX", Eclipse, SWING etc.?
Das sind die Bibliotheken die die Grafikelemente und Routinen zur Darstellung der Oberfläche bereitstellen und außerdem zur Anzeige der Bilder verantwortlich sind.
Die sind der Hauptbremsklotz von deiner Java-Anwendung.

Wer hat bei euch die Entscheidung getroffen so eine Anwendung noch auf Java-Basis zu entwickeln ?? Das wäre persönlich meine letzte Wahl gewesen.
127944
127944 28.04.2016 aktualisiert um 08:48:57 Uhr
Goto Top
Zitat von @114757:
Wer hat bei euch die Entscheidung getroffen so eine Anwendung noch auf Java-Basis zu entwickeln ?? Das wäre persönlich meine letzte Wahl gewesen.
Man glaubt gar nicht, welche riesigen Projekte in Java umgesetzt werden. Ist doch alles so toll. Und Plattformunabhängig und bla bla kot*


Zitat von @37414:
Wäre schön, wenn Ihr mir da nochmal weiterhelfen könntet...
Hier gilt das Selbe, wie von mir oben schon gesagt: Ohne den Quellcode kann da keiner ernsthaft was dazu sagen. Ich weiß ja nicht, in welchem Vertragsverhältnis ihr mit den Softwareentwicklern steht. Wenn ihr das aber in Auftrag gegeben habt müsstet ihr mal das Pflichtenheft prüfen oder einfach eine neue Funktion "mach schneller das Ganze" in Auftrag geben.
114757
114757 28.04.2016 aktualisiert um 08:51:43 Uhr
Goto Top
Zitat von @127944:
Man glaubt gar nicht, welche riesigen Projekte in Java umgesetzt werden. Ist doch alles so toll. Und Plattformunabhängig und bla bla kot*
Jepp, für alles was keine Oberfläche braucht bin ich mit dabei aber sobald da was GUI mäßiges mit ins Spiel kommt bin ich weg ...
37414
37414 28.04.2016 aktualisiert um 09:14:32 Uhr
Goto Top
Danke Euch für die weitere Mühe...

Wir haben vorab mit der Firma ausgemacht, dass wir auch den Quellcode erhalten... genau das war ja unser Problem beim vorherigen Programm gewesen (einige von Euch erinnern sich vielleicht noch an meine diesbezüglichen Threads) face-smile

Kann man das Ganze denn "schneller machen", obwohl es mit GUI in Java programmiert ist?
Handelt es sich ggf. um Programmierfehler der Firma?

Eine Zusatzfrage noch:
Wir haben - da alles so lahm läuft - sogar neue Rechner bekommen.
Bei den alten PCs mit Win7, 32-bit, älterem Prozessor und 4 GB Arbeitsspeicher war es so, dass sich der Arbeitsspeicher immer weiter füllte (wenn man mehrere Programmbereiche öffnete), bis ein Punkt erreicht war, wo das Programm sich aufhing.
Nun haben wir Rechner mit Win7, 64-bit und i5-Prozessor, sowie 8 GB Arbeitsspeicher. Nun passiert das nicht mehr.
Meiner Meinung nach hat sich aber an der Geschwindigkeit, die Fotos zu öffnen nichts verbessert. Hängt die Foto-Darstellung also nicht auch mit dem erhöhten Arbeitsspeicher zusammen, sondern NUR mit dem eigentlichen Programm?

Danke und Gruss,
imebro
114757
114757 28.04.2016 aktualisiert um 09:21:56 Uhr
Goto Top
Zitat von @37414:
Hängt die Foto-Darstellung also nicht auch mit dem erhöhten Arbeitsspeicher zusammen, sondern NUR mit dem eigentlichen Programm?
Zu 99% ja.

Wenn dir der Speicher vollläuft ist das Programm sehr schlecht geschrieben und es wurde nicht sparsam mit Ressourcen umgegangen. Ein sehr gutes Anzeichen für schlecht organisierten Code.

Lass dir den Code aushändigen und einen anderen Programmierer drüber schauen und bewerten lassen.

Mehr können wir hier nicht sagen ohne einen einzigen Fetzen Code face-sad Die Diskussion ist also sinnlos.
Aber deine Threads enden ja nie vor 100 Antworten ...
127944
127944 28.04.2016 um 09:18:29 Uhr
Goto Top
Zitat von @37414:
Kann man das Ganze denn "schneller machen", obwohl es mit GUI in Java programmiert ist?
Handelt es sich ggf. um Programmierfehler der Firma?
Wir drehen uns im Kreis. Ohne den Quellcode...

Eine Zusatzfrage noch:
Wir haben - da alles so lahm läuft - sogar neue Rechner bekommen.
Bei den alten PCs mit Win7, 32-bit, älterem Prozessor und 4 GB Arbeitsspeicher war es so, dass sich der Arbeitsspeicher immer weiter füllte (wenn man mehrere Programmbereiche öffnete), bis ein Punkt erreicht war, wo das Programm sich aufhing.
Nun haben wir Rechner mit Win7, 64-bit und i5-Prozessor, sowie 8 GB Arbeitsspeicher. Nun passiert das nicht mehr.
Meiner Meinung nach hat sich aber an der Geschwindigkeit, die Fotos zu öffnen nichts verbessert. Hängt die Foto-Darstellung also nicht auch mit dem erhöhten Arbeitsspeicher zusammen, sondern NUR mit dem eigentlichen Programm?
Das könnte durchaus ein Hinweis auf schlechte Programmierung sein. Muss es aber nicht. Um das zu beurteilen, müsste man das Programm in Aktion sehen. Nur so ließe sich in etwa abschätzen, wie viele Daten da im Speicher gehalten werden müssten / könnten / sollten
37414
37414 28.04.2016 aktualisiert um 13:29:27 Uhr
Goto Top
Danke Dir "jodel32" für Deinen weiteren Hinweis.
Ich werde das jetzt zunächst mal an unseren zuständigen Internen weitergeben und dann sicher auch mal an die programmierende Firma.
Ebenso danke für den Tipp mit einem externen Programmierer, der sich den Code mal anschaut...

LG
imebro

P.S.:
Deine unterschwellige Belehrung jedoch empfinde ich als überflüssig und unangebracht
114757
114757 28.04.2016 aktualisiert um 13:33:17 Uhr
Goto Top
Wenn man dir halt 20 mal das selbe reindröhnen muss, ist das aber auch überflüssig ...
127944
127944 28.04.2016 um 13:37:13 Uhr
Goto Top
Zitat von @114757:

Wenn man dir halt 20 mal das selbe reindröhnen muss, ist das aber auch überflüssig ...

Nur ein Beispiel jetzt:

Zitat von @127944:
Das kann keiner, der den Code des Programmes nicht gesehen hat, beurteilen.

Zitat von @127944:
Hier gilt das Selbe, wie von mir oben schon gesagt: Ohne den Quellcode kann da keiner ernsthaft was dazu sagen.

Zitat von @114757:
Mehr können wir hier nicht sagen ohne einen einzigen Fetzen Code face-sad Die Diskussion ist also sinnlos.

Manchmal muss man auch etwas als gegeben annehmen - auch wenn man es selbst nicht ganz versteht
Sheogorath
Sheogorath 28.04.2016 um 14:49:25 Uhr
Goto Top
Moin,

wie alle Vorredner es eigentlich schon gesagt haben: Man kann nur vermuten woran es liegt, ziemlich sicher ist aber, dass irgendwas nicht optimal umgesetzt ist. (Für manche heißt hier 'nicht optimal umgesetzt' auch "die falsche Programmiersprache gewählt wurde" ;) )

Jedenfalls hast du exakt 3 Optionen um das Problem zu ändern:

1. Beauftrage die Firma, die die Software geschrieben hat den Code zu verbessern. Ggf. ein Pflichtenheft mit festem Zeitraum in dem ein Bilder in einer gewissen Umgebung geladen sein muss.

2. Lass dir den Sourcecode aushändigen (wenn man es für dich/euch programmiert hat sollte das möglich sein) und lasse dritte Programmierer drüber schauen.

3. Beauftrage eine Firma deiner Wahl mit der Neuprogrammierung des gesamten Tools. Dieses mal ins Pflichtenheft schreiben, dass es eben entsprechende Leistungen erbringen muss.

Wirklich mehr Optionen hast du nicht. Alles andere wurde in jedem Fall schon gesagt.

Gruß
Chris
37414
37414 28.04.2016 aktualisiert um 14:52:18 Uhr
Goto Top
OK... "jodel32"

Finde es eben nur schade, dass man so eine Kritik nicht ein bisschen "netter" und ohne Schulmeisterei formulieren kann.
Da muß man sich auch nicht wundern, wenn der Andere dann nicht super happy reagiert.
Wie sagt man so schön? --> "Wie man in den Wald hinein ruft, so schallt es heraus"... und dieser Spruch paßt hier sehr gut.

Ich werde hier jetzt ganz sicher keinen Streit anzetteln.
Ihr habt mir weitergeholfen und gut iss.

Nochmals vielen Dank für Eure Beschreibungen, die ich als Argumentationsgrundlage intern verwenden werde.

LG
imebro
37414
37414 28.04.2016 um 14:52:41 Uhr
Goto Top
Danke @ Chris

LG
imebro
127944
127944 28.04.2016 um 14:55:42 Uhr
Goto Top
Zitat von @37414:
Finde es eben nur schade, dass man so eine Kritik nicht ein bisschen "netter" und ohne Schulmeisterei formulieren kann.
Netter wie Jodel es gemacht hat, wäre keine Kritik mehr, sondern ein "Gut gemacht" mit Schulterklopfen
JanisPlayer
JanisPlayer 14.02.2020 aktualisiert um 03:40:18 Uhr
Goto Top
JoDas ist zwar schon ein paar Jahre her, aber scheinbar hat keiner Lust gehabt dir zu sagen, dass man so etwas sehr wohl Beschleunigungen kann.
Damit du eine Vorschau hast, musst du eigentlich nur die Bilder auf dem Server von Tiff zu JPG komprimieren.
Den Code gibt es fertig auf GitHub oder Stackoverflow und ist leicht zu verstehen.
Eine Vergrößerungslupe ist auch kein Hexenwerk, also das können die dir in über 10 Minuten reinbauen.
Wenn die Leute die das geschrieben haben nicht komplett auf den Kopf gefallen sind, kann man das auch einfach hinzufügen. XD
Eigentlich kann man diese Dinge auch direkt als Webseite ausliefern.
Das ist Java nicht einmal zwingend notwendig.
Aber an Java liegt es nicht, du hast einfach einen schlechten Entwickler erwischt, der sich beim Punkt Alltags-Performance und Bedienung keine Mühe gegeben hat.
Bei dem was du da beschrieben hast, genügt fast sogar Nextcloud. XD
Da kannst du auch gemütlich Dokumente anlegen und Teilen und mit Nutzergruppen verwalten.
Gibt ein so toll wie du das in Fünf Minuten installieren kannst als Leihe.
Das ist so ähnlich wie Dropbox und kann erweitert werden mit Plugins.
Überweisungen kannst damit nicht machen, aber es ist ja wir gesagt erweiterbar.
Und es handelt sich um einen Cloud Speicher.
Vielleicht eine schöne Erweiterungs-Idee.
Aber mir wären Überweisungen auf einem Webserver zu unsicher.
Aber die Programmierer würde ich bitten ihre Arbeit richtig zu machen.
Das ist nicht Alltags freundlich und auch keine Lösung...
Vielleicht haben Sie ja auch den Mist behoben.