Java-Wechselvorschlag

Django, Flask, Bottle, WSGI, CGI…
Antworten
xentity
User
Beiträge: 2
Registriert: Dienstag 3. März 2020, 20:40

Guten Abend liebes Forum.

ich habe eine kleine Wirtschaftssimulation als Hobbyprojekt. Primär lag der Fokus beim "Weg dorthin". So hatte ich es damals unter anderem dazu genutzt, mir den Sinn und Zweck von OOP anzueignen. Während des Studiums habe ich JSF gelernt und war mit den Fortschritten auch recht zufrieden. Ich mag Java und schätze es als Lehrsprache (darf man das hier sagen? :oops: ), mag aber spätestens seit dem Thema "Data Science/Machine Learning" und Check_MK-Checks auch Python. Daher habe ich kleinere Webprojekte wie API-Backends oder RPi-Steuerungen in Flask realisiert (mit Java wäre das wie Kanonen auf Spatzen). Zum anderen merke ich, dass ich mit JSF wahrscheinlich auf längere Sicht keinen Blumentopf mehr gewinnen werde.

Ich überlege, meine Wirtschaftssim. auf Python umzuschreiben, weiß aber nicht, ob es für mich die richtige Kombination in der Pythonwelt gibt. In der Hoffnung, dass ... - frage ich hier mal.

Meine Anforderungen wären:
  • aktiv betriebenes Web-Framework
  • object-relational mapping
  • zeitgesteuerte Aktivitäten (unter Nutzung des ORM)
  • nutzbare GUI-Elemente (ich bin eine Niete in hübsch, CSS und JavaScript) und Ajax-Unterstützung
  • optional: Funktionen wie Login, Nutzer, Templates
  • nutzbar in einer IDE, die die Abhängigkeiten kennt
  • nutzbar mit einer IDE, die eine unkomplizierte "Try-and-Error-Programming & Deployment"-Unterstützung hat
Hätte da jemand Erfahrungen/Tipps/Hinweise?
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

aktiv betriebenes Web-Framework
Django oder Flask.

object-relational mapping
Django oder Flask + SQLAlchemy

zeitgesteuerte Aktivitäten (unter Nutzung des ORM)
Zeitgesteuerte Aktivitäten überlässt man dem Betriebssystem. Unter Linux Cron unter Windows den "Aufgaben". Die starten dann Scripte, die haben dann natürlich ORM.
Sollte man auch bei Java so machen.

optional: Funktionen wie Login, Nutzer, Templates
Django

nutzbar in einer IDE, die die Abhängigkeiten kennt
Da denkst du zu viel Java.
Die Abhängigkeiten solltest du für dein Projekt kennen.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Flask ist imho eine gute Idee. Gerade wenn man aus der Java-Entwicklung kommt wird man hier schnell feststellen mit wie wenig Code man erste Ergebnisse auf die Beine stellen kann.

Django hat mich immer an Spring erinnert. Mächtiges Framework, aber etwas einschüchternd und für den Anfang sicherlich deutlich schwieriger als leichtgewichtige Frameworks wie Flask oder Tornado.
When we say computer, we mean the electronic computer.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was schwierig ist und was nicht liegt sehr im Auge des Betrachters. Bei der langen Anforderungsliste des TE ist ein rundum-sorglos-Framework ala Django, das alles mitbringt, und vor allem auch schon mit einfachen Startpunkten versehen ist, im Zweifel einfacher, als ein Framework wie Flask, dem du mit Erweiterungen erstmal beibiegen musst, sowas wie ein ORM oder JS-Frameworks anzubinden. Das letzteres besser durchschaubar ist, *wenn* man das denn durchschauen will oder muss, als ein eher monolithisches Framework wie es Django darstellt.
xentity
User
Beiträge: 2
Registriert: Dienstag 3. März 2020, 20:40

sparrow hat geschrieben: Dienstag 3. März 2020, 21:45 zeitgesteuerte Aktivitäten (unter Nutzung des ORM)
Zeitgesteuerte Aktivitäten überlässt man dem Betriebssystem. Unter Linux Cron unter Windows den "Aufgaben". Die starten dann Scripte, die haben dann natürlich ORM.
Sollte man auch bei Java so machen.
JSF tut sich sehr schwer, was Aktionen von außen betrifft. Zudem war Hibernate so gestrickt, dass es dachte, es alleine ändert die Daten. Hat man die DB geändert, dann bedurfte es mitunter den Neustart des Containers, um ein Neueinlesen zu erzwingen.

sparrow hat geschrieben: Dienstag 3. März 2020, 21:45 nutzbar in einer IDE, die die Abhängigkeiten kennt
Da denkst du zu viel Java.
Die Abhängigkeiten solltest du für dein Projekt kennen.
Ich meine damit zu einen, dass ich in Eclipse/Netbeans einfach alle Imports automatisch reinziehen lassen konnte. Zudem kannte die IDE dann die Klassen und konnte dann mit Autovervollständigung helfen, bzw. hat nicht gekräht, dass es diesen oder jenen Verweis nicht kennt. So konnte ich mir bei fehlenden IDE-Fehler sicher sein, dass keine syntaktischen Fehler oder fehlende Imports enthalten sind.


Eine IDE statt gedit/nano hat für mich schon gewisse Vorteile wie syntax check und highlighting, indentations (auch über mehrere Zeilen), one hit deployments (wie in aller Welt startet ihr ständig den Flask oder Django Server neu? Da springt man doch nur noch durch die Fenster von Editor, Console und Webbrowser). So einen richtigen "Flow" habe ich für mich noch nicht gefunden.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe lange nichts mehr mit Java und Hibernate gemacht, aber das man dem nicht caching für volatile Daten abgewöhnen kann fände ich komisch. Und wenn, kannst du immer noch im App-Server einen thread oder einfach per cron-getriggertem HTTP-Request eine Abarbeitung einer solchen Stapelverarbeitung in-process auslösen, so dass Hibernate der Boss bleibt.

Die meisten von dir genannten Dinge kann auch mein Editor, Auto-Vervollständigen inklusive. Und bei der Menge an Leuten die hier aufschlagen & Probleme haben, die genau daher rühren, dass ihre Programme in der IDE gestartet sich anders verhalten - da lobe ich mir mein Alt-Tab im die Shell & ein beherztes CTRL-C. Aber das ist alles Geschmack. Dir muss nur bewusst sein, dass in Python wegen des dynamischen Typsystems der auto-Vervollständigung Grenzen gesetzt sind.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Zum entwickeln kann man den meisten Webrahmenwerken/Anwendungsservern auch sagen das sie die Dateien überwachen sollen und automatisch neu starten wenn sich was geändert hat oder wenn sich die Dateizeit von einer bestimmten Datei geändert hat. Da muss man also nicht ständig Server neustarten. Zur Not schreibt man sich so eine Funktionalität schnell selbst.

`nano` ist ja auch kein Editor mit dem man Programme schreiben will. Gedit ist da schon besser. Geany oder Vim sind noch besser. Ich persönlich verwende Vim in der Konsole und Sublime Text 3 in grafischen Umgebungen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten