Grundsatzfragen zu meinem neuen Projekt Einnahmen-Ausgaben App

Diskutiere Grundsatzfragen zu meinem neuen Projekt Einnahmen-Ausgaben App im Java Basics - Anfänger-Themen Bereich.
B

BigMemo007

Hallo liebes Forum,

ich will ein Projekt (App) realisieren, dass Einnahmen und Ausgaben gegeneinander stellt.

Es soll ein Feld für die Betragseingabe geben, Datumseingabe, zwei Listen (jeweils für Einnahmen und für Ausgaben) und dann ein "Verbuchen"-Button geben. Am Besten alles auf einer Frame. Die Einnahmenliste soll links und die Ausgabenliste soll rechts platziert werden.

Ideal ist der Aufbau der Listen hirarchisch. Z.B sollen Grundsätliche Punkte wie Lebensmittel, Bekleidung, Mobililtät usw Unterpunkte wie Wasser, Hosen, Schuhe, Auto, Fahhrad usw beinhalten. Der User soll mit einem +-Button jeweils eine Untergruppe selber in der Liste erstellen können. Bei Bedarf soll er in der Untergruppe noch eine Untergruppe erstellen können. Das ideal ohne Limit, aber ich glaube das ist unmöglich. 5 Untergruppen villeicht? Hast was geht.

Die App am Besten für Desktop, Android und IOS. Aber IOS und Java wird schwierig. Oder doch nicht?

Was ich kann und was ich habe:

Ich würde behaupten, dass ich in Java nicht mehr ein Anfägner bin, sonder jetzt in Richtung fortgeschrittener Programmierer gehe. Einfach Spiele wie Snake, Vier-Gewinnt usw habe ich selber programmieren können. Und meine IDE ist Eclipse.

So. Meine Fragen sind folgende:

1. Nehme ich Swing oder JavaFX oder doch was anderes?

2. Welche ListenView nehme ich für die Anzeige meiner Listen? (TableView, ListView, usw)

3. Um die Kostenposten zu speichern, welche Collection würdet ihr mir empfehlen. Den kleinsten Teil, z.b eine spezielle Buchung Schuhe, 31,20€ 9.920 habe ich gedacht, packe ich in eine HashMap. Name (Schuhe) mit String, Betrag float und Date für Datum. Die HashMap in eine Arraylist, da alle Buchungen über eine ArrayList zugreifbar werden sollen. Gibt es bessere Lösungen auch in Anbetracht der Unterpunkte?

4. Android soll ja auch bedient werden. Wie nutze ich Eclipse für Android und Desktop? Habt ihr Ratschläge für mich?

Am Ende soll der User mit einem Button "Auswertung" z.B. mit einem Balkendiagramm sein Ergebnis sehen können. Ob er im Plus oder im Minus ist und die größten Kostenposten mit einem Blick erkennen können und entscheiden wie wichtig welche Kosten sind oder ob vermeidbar sind.

Für Hilfen, Ideen, Denkanstöße bin ich immer sehr dankbar.

Meine Hoffnung nach disem Projekt ist, dass ich ein viel besserer Programmierer geworden bin :))
 
MoxxiManagarm

MoxxiManagarm

Die App am Besten für Desktop, Android und IOS. Aber IOS und Java wird schwierig. Oder doch nicht?
Wenn du alles davon abdecken willst, dann wird das aus meiner Sicht generell mit Java schwieriger. Hast du mal überlegt an der Stelle Webtechnologien einzusetzen? Mit Media Queries lassen sich tolle Responsive Designs erstellen.
 
B

BigMemo007

Webtechnologien sind wahrscheinlich für dieses Vorhaben eh die bessere Lösung. Da müsste ich mich rein arbeiten. Könnte natürlich zwei drei Udemy Kurse reinziehen.
Aber meine Intension ist, Java oder grundsätzlich Programmieren noch besser zu verstehen und würde erstmal Java bevorzugen. Mit Hilfe könnte ich es in Java auch schaffen.
Lassen sich Media Queries über CSS auch über Eclipse in Java einbinden?
 
J

JustNobody

Also die Idee mit Web-Technologien ist recht gut aus meiner Sicht. Du kannst Dir diesbezüglich z.B. einmal Vaadin ansehen. Sogenannte Progressive Web Apps (PWAs) kann man auf dem Handy im Browser aufrufen und dann gibt es für den Nutzer die Möglichkeit, diese App wie eine App auf dem Handy zu handhaben.

Nachteil ist dabei natürlich, dass es da Abstriche am "native Look" und der Bedienung gibt. Dies ist aber generell der Fall - egal, was man an Cross-Plattform Framework einsetzt.

Weitere Möglichkeiten:
- Wenn man JavaFX nimmt, dann ginge es aber auch mit den in Java geschriebenen Apps. Dazu kannst Du mal bei https://gluonhq.com/ vorbei schauen - speziell dort das Gluon Mobile.
- reine native App Entwicklung für jede Plattform. Desktop wäre dann Swing / JavaFX oder SWT, Android wäre dann entsprechend mit dem Android Studio + Android SDK und für iOS auf dem Mac mittels XCode und Swift. Das war in der Vergangenheit mein Weg, damit eben wirklich entsprechend für jede Plattform exakt alles stimmig ist. Und man hat den großen Vorteil, dass man eben nicht in Probleme rennt weil man Dinge benötigt, die nicht oder nicht in der richtigen Version für die Plattform zur Verfügung stehen. (Was habe ich mich mal eine Zeit lang mit Cordova und Xamarin abgeplagt. Das war ein Horrortrip ... Speziell Xamarin habe ich als ganz miese Lösung in Erinnerung.)
- Wenn man nicht auf Java basieren möchte: Cordova ist ein von vielen HTML / JavaScript / CSS Frameworks. Die Native App ist dann eigentlich nur noch ein abgespeckter Web-Browser mit entsprechender Web-App drin. ==> Aus meiner Sicht durch PWAs abgelöst! Aber wenn man zwingend einen App-Store Eintrag braucht, dann ist das evtl. der Weg, den man gehen möchte ... Da gibt es aber auch noch mehr. Electron wäre so ein Framework für den Desktop - Visual Studio Code nutzt das wohl ....
- C# wäre noch zu nennen mit dem Xamarin. Meine Erfahrung ist, dass Microsoft (bzw. aufgekaufte Firmen) da gute Ideen hatte und immer noch hat, aber die Umsetzung teilweise extrem mangelhaft ist. So ist die Basis das XAML - ein XML Dokument ähnlich dem FXML bei JavaFX. Nur eben deutlich stärker was z.B. Bindings und so angeht. Und das gibt es dann für alle Plattformen: Desktop wäre WPF, Silverlight war ein Browser Plugin (Rest in Peace), Windows Phone 7 / 8 und das ganze Windows 10 Drama mit allen möglichen App-Technologien. Aber Cross Plattform war es nicht. Es brauchte ständig Anpassungen und so. Zu Windows Phone 7 Zeiten habe ich dann z.B festgestellt, dass das TextField unter WP7 in der Funktionalität nicht komplett umgesetzt war (Zeit zu Ende? Entwickler keine Lust mehr gehabt? Wer weiss ...) Also ich würde davon meine Finger lassen ...
- C++ fällt mir direkt QT ein....

Aber die sinnvolle Lösung: Vaadin. Mach eine Web-Applikation daraus. Da kannst Du dann auch schön direkt mit Daten auf einem zentralen Server arbeiten und so ... Also meiner Meinung nach eine Top Sache (Wobei ich das auch nur ausgetestet habe. Damals mit Anforderung, einen Barcode Reader zu haben. Das hat prinzipiell geklappt, aber das war nicht 100% überzeugend (was an meinem Code und den gewählten Abhängigkeiten gelegen haben könnte bzw ich bin sicher, dass es daran lag, weil ich da kein Experte war und auch jetzt nicht bin!) so dass ich das damals als native Android App umgesetzt habe.

Webtechnologien sind wahrscheinlich für dieses Vorhaben eh die bessere Lösung. Da müsste ich mich rein arbeiten. Könnte natürlich zwei drei Udemy Kurse reinziehen.
Aber meine Intension ist, Java oder grundsätzlich Programmieren noch besser zu verstehen und würde erstmal Java bevorzugen. Mit Hilfe könnte ich es in Java auch schaffen.
Lassen sich Media Queries über CSS auch über Eclipse in Java einbinden?
Da schau Dir mal Vaadin an. Da kannst Du viel in Java machen. HTML, JavaScript und CSS kann man auch einbinden / machen, aber das ist nicht zwingend notwendig (aber früher oder später nutzt man es natürlich eh, spätestens, wenn es gut aussehen soll :) )
 
B

BigMemo007

Vaadin hört sich sehr interessant an. Habe aber grade dazu Fragen:

1. Kann man Vaadin eine App (Android, IOS, Desktop) so gestalten, dass sie wie eine native aussieht? Ohne dass der Browser komplett geladen wird mit Adresszeile, Menüpunkten, usw., sondern nur die Browserengine startet mit der App?

2. Soll ich mir vor Vaadin ein Tutorial über die Webtechnologien (HTML, CSS, JavaScript, PHP, usw) mir reinziehen?

3. Habt ihr eine gute Tutorial-Empfehlung für Vaarin und ggf. für die Webtechnologien?
 
mihe7

mihe7

Das Problem bei einem solchen Projekt ist, dass es beliebig erweiterbar ist :)

Man kann also z. B. mit einer reinen Desktop-Anwendung beginnen, dann überlegt man sich, dass man vielleicht noch Android haben will. Kaum ist das rum, kommt man auf den Trichter, dass es doch schön wäre, wenn die Daten nicht lokal gehalten werden, sondern über das Internet verfügbar wären, dann kommen andere Geräte dazu usw.

Die Frage ist also: was ist Dein Ziel? Wenn Du das machst, um mehr mit Java zu arbeiten, macht es natürlich keinen Sinn, eine PWA zu schreiben, die die Daten lokal auf dem Gerät verwaltet. Wenn die Anwendung selbst im Vordergrund steht und es in erster Linie darum geht, möglichst eine App für Android und iOS zu haben, dann macht es keinen Sinn, sich mit JavaFX oder gar Swing rumzuschlagen. Wenn Du sagst, eigentlich will ich alles haben, dann kannst Du natürlich auch beides machen. Möglichkeiten gibt es mehr als genug.

Selbstverständlich lassen sich verschiedene Ansätze kombinieren, z. B. ein Java-Backend, auf das mit verschiedenen Clients zugegriffen werden kann. So könntest Du einen Web-Client, einen Android-Client (nativ) und eine Desktop-Anwendung schreiben. Alleine bei Web-Clients gibt es gefühlt mehr Möglichkeiten als Menschen auf dem Planeten.

Beispielsweise käme es bei den Web-Clients wieder darauf an, ob Du Hintergrundwissen erlangen, etwas ausprobieren oder fit für die Arbeitswelt werden willst? Sprich: ohne Framework, irgendein abgefahrenes Framework oder das, was aktuell am Markt gefragt ist? Hat alles seine Vor- und Nachteile.
 
J

JustNobody

Also wie das aussehen würde mit einer PWA kannst Du recht gut ausprobieren: https://labs.vaadin.com/business/

Also einfach mal mit einem Browser auf verschiedenen Geräten aufrufen. Nach dem Aufruf sollte dich ein Smartphone fragen, ob es die App installieren soll. So lief es zumindest auf meinem Android und iOS Gerät.
Wenn Du die App installiert hast, dann kannst Du den Browser zu machen und die App starten. Und dann hast Du natürlich keine Elemente des Browser mehr wie die Adresszeile und so ...

Wenn Du meinst, dass Vaadin etwas ist, das Dich interessiert, dann wäre vaadin.com der erste Anlaufpunkt für mich. Da findet sich viel Dokumentation. Die Trainings-Videos sind aber größtenteils nicht frei (Die ersten einer Serie in der Regel, also evtl. brauchbar für einen ersten Überblick / Start) - die hat man erst, wenn man etwas Geld in die Hand nimmt. Aber das sollte nicht notwendig sein, denn es gibt genug Dokumentation, Beispiele, ... Und auch ein freies eBook. Also da einfach mal auf der Seite etwas austoben. Das erste Trainings Video, das frei ist, gibt evtl. auch einen guten und schnellen Einstieg - um überhaupt erst einmal erkennen zu können, ob es das ist, was man will.

Generell würde ich dann ruhig erst einmal bei Vaadin einsteigen. Aber immer wenn Du Dinge brauchst, die Neu für Dich sind oder in denen Du nicht sicher bist, dann wäre mein Tipp: Schritt zurück und diese Sache erarbeiten. Also nicht versuchen, im aktuellen Projekt das irgendwie "zum laufen zu kriegen" ohne die Technologie verstanden zu haben! Technologien sollten meiner Meinung nach bei Bedarf immer ausreichend angelesen / ausgetestet werden, damit man sie dann richtig einsetzen kann.
 
B

BigMemo007

Vielen Dank an euch. Werde mich mit diesen Technologien auf jedene Fall beschäftigen. Doch will ich meine Lösung ersteinmal mit JavaFX hinkriegen. Wenn ich das geschafft habe, denke ich, dass ich mein Programm soweit verstanden habe und auch diese auf andere Technologien oder Plattformen einfacher übertragen kann.
 
Thema: 

Grundsatzfragen zu meinem neuen Projekt Einnahmen-Ausgaben App

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben