moin moin,
so mal wieder ein etwas kompliziertere Threadbeitrag/Frage von mir.
Soll ich für mein zukünftiges Projekt JAVA oder lieber PHP verwenden.
Ich kenne mich mit beiden Sprachen sehr gut aus. Mit ersterer nicht zuletzt, weil ich damit viel in der uni gearbeitet habe
PHP dagegen war meine erste Sprace und habe damit über die letzten 12 Jahre auch schon einige Projekte umgesetzt.... Nur in letzter Zeit kaum noch was mit PHP gemacht
Jetzt möchte ich von euch wissen, welche Sprache sinnvoller ist eingesetzt zu werden. Klar es geht um ein Web-Projekt
In den Universitäten wird PHP immer belächelt und auch so habe ich schon oft gehört, man soll für enterprise Applikationen lieber JAVA verwenden.
Warum könnte Java besser sein?
Java muss nicht jedes mal übersetzt werden und ich kann festen State behalten.
Ich würde behaupten dass Java insgesamt performanter ist, also geschwindigkeitstechnisch, gegenüber PHP.
Das hätte ich bis zu PHP 5.X behauptet. Jetzt aber mit HHVM und PHP 7....... ? -> vllt. wisst ihr dazu ja mehr.
Agenommen ich setze Frameworks ein, oder habe auch so einiges an State. in PHP muss für jeden Request, das System sozusagen neu zusammengesetzt werden. (glaube in Laravel über 50 DIs, die jedes mal "ge-newt" und verschraubt werden müssen)
In Java, einmal zum Start und dann nie wieder........
Hier könnte Java schneller sein?
Wenn ich aber keine Frameworks einsetze und nicht viel zusammenbasteln muss, vllt. ist hier sogar PHP schneller? Oder auch nicht?
Was definitiv ein Contra-Punkt bei JAVA ist, ist der enorm hohe RAM-Verbrauch.
In Java gibts ja das Framework Spring (Boot), ein sehr mächtiges Framework......... bin mir nicht sicher ob ich das überhaupt einsetzen möchte, weil es fast zu komplex ist um zu verstehen was das alles unter der Haube macht^^
Nachteil an dem Framework sind die langen Startzeiten. Möchte ich das neue Projekt auf ner Art Mikroarchitektur aufbauen und das ganze in Containern deployen, so benötigt jeder gestartete Container über ne halbe Minute Startzeit, was bei automatischen Loadbalancern/Container-Nachladeeinheiten sich eher negativ auswirkt------> siehe google Cloud
Zum Design:
Ich würde auf sogenannte transactionale Scripts (prozeduraler Stil setzen und bin so nicht auf das "pseudo-oo" angewiesen, was meiner Meinung nach nicht wirklich viel Sinn ergibt (siehe hierzu einen anderen Thread von mir))
Was mir an PHP gut gefällt sind die assoziativen Arrays. Die habe ich in JAVA so leider nicht (Vllt. schreibe ich mir einen Art präprozessor um mir diese Funktionalität auch in Java zu ermöglichen^^......... der präprozessor wandelt das ganze dann einfach in klassen um^^)
Ich glaube diese assoziativen Arrays sind neben der schwachen typisierung von PHP ein Grund der schnellen Entwicklung in PHP
Also was habe ich vor:
In Java mit nem Art präprozessor (für assoziative arrays) und ohne grossartigen Frameworks, also mit jersey+ hibernate mein nächstes Webprojekt basteln, ist das sinnvoll?
Also was ich noch nicht gesagt habe, das nächste Webprojekt basiert auf einer REST-Schnittstelle und sollte eben auch horizontal gesplittet (<- Mikrorchitektur) konstruriert werden/ werden können.
Eventuell schreibe ich mir hier noch was eigenes um noch komprimierter, schneller Daten auszutauschen, JSON in Rest, überträgt mir da noch zuviel "Müll"^^
Frontend: REACT oder was Vergleichbares.
Naja also würde ich in Java nicht viel anderes verwenden wie in PHP auch. Würde vermutlich auch ähnlich programmieren.
Was ich in Java zudem noch hätte wären halt ThreadPools, wo ich Worker laufen lassen könnte, um tasks zu schedulen........... das finde ich geht in Java schon besser wie wenn ich via Cronjobs workerThreads in php starten müsste
Als Datenbank/Datenbanken MySql + irgendwelche NoSql-Datenbanken und dann noch Memcache, für gecachten State, der dann von mehreren "Serverinstanzen" verwendet werden kann
Kein Session-Sate, ich würde JWT verwenden.
JA soweit die Idee
Jetzt die Frage an euch, ist das sinnvoll, das so zu machen, oder soll ich doch lieber PHP verwenden, weil es schneller ist?, schneller zu programmieren ist?
Würdet ihr das ganze designtechnisch anders machen?
Würdet ihr euch globige Frameworks ins Haus holen? Also sowohl in Java als auch in PHP........... wobei ich ja entsprechende Module schon verwende, nur nicht als zusammenhängendes Framework
Ein Request-Lifecycle von mir sieht so aus: Request via HTTP, oder sonst was -> FilterSchicht (die schon gleich mal ein paar validate-checks vornimmt, JWT-token analysiert, und schon mal grobgranular checkt ob der REST-Endpoint mit entsprechender Berechtigung überhaupt aufgerufen werden darf) -> REST-Endpoint -> verarbeitung des Request im prozeduralen Stil, also ein paar Service-Methoden-Aufrufe, die dann eventuell ein paar JDBC, oder Hibernate Dinge auf der Datenbank ausführen, Cachen, etc pp -> JSON oder ähnliche Antwort zurück an den Request-Anfrager -> ENDE
(also jetzt mal ganz vereinfacht^^)
Wie würdet ihr die performance von PHP, JAVA einschätzen, wenn man es so oder so macht,
- also mit Frameworks
- keine frameworks, eher leichtgewichtig, einfach Database Requests und paar security/ACL filter
Also auch gerne ein paar Kritiken zum angedachten Architekturmodel/plan, Design
ja soweit mal
lg knotenpunkt
EDIT: was ich an spring nicht so toll finde: so einen request-lifecycle hat man schnell selbst programmiert, da benötigt man mehr Einlesungszeit, um auch wirklich alles aus Spring rausholen zu können, bzw. sein Wissen dahin gehend erweitert zu haben, um zu wissen wie man Feature XYZ implementieren kann, das nicht dem default verhalten von Spring folgen soll
so mal wieder ein etwas kompliziertere Threadbeitrag/Frage von mir.
Soll ich für mein zukünftiges Projekt JAVA oder lieber PHP verwenden.
Ich kenne mich mit beiden Sprachen sehr gut aus. Mit ersterer nicht zuletzt, weil ich damit viel in der uni gearbeitet habe
PHP dagegen war meine erste Sprace und habe damit über die letzten 12 Jahre auch schon einige Projekte umgesetzt.... Nur in letzter Zeit kaum noch was mit PHP gemacht
Jetzt möchte ich von euch wissen, welche Sprache sinnvoller ist eingesetzt zu werden. Klar es geht um ein Web-Projekt
In den Universitäten wird PHP immer belächelt und auch so habe ich schon oft gehört, man soll für enterprise Applikationen lieber JAVA verwenden.
Warum könnte Java besser sein?
Java muss nicht jedes mal übersetzt werden und ich kann festen State behalten.
Ich würde behaupten dass Java insgesamt performanter ist, also geschwindigkeitstechnisch, gegenüber PHP.
Das hätte ich bis zu PHP 5.X behauptet. Jetzt aber mit HHVM und PHP 7....... ? -> vllt. wisst ihr dazu ja mehr.
Agenommen ich setze Frameworks ein, oder habe auch so einiges an State. in PHP muss für jeden Request, das System sozusagen neu zusammengesetzt werden. (glaube in Laravel über 50 DIs, die jedes mal "ge-newt" und verschraubt werden müssen)
In Java, einmal zum Start und dann nie wieder........
Hier könnte Java schneller sein?
Wenn ich aber keine Frameworks einsetze und nicht viel zusammenbasteln muss, vllt. ist hier sogar PHP schneller? Oder auch nicht?
Was definitiv ein Contra-Punkt bei JAVA ist, ist der enorm hohe RAM-Verbrauch.
In Java gibts ja das Framework Spring (Boot), ein sehr mächtiges Framework......... bin mir nicht sicher ob ich das überhaupt einsetzen möchte, weil es fast zu komplex ist um zu verstehen was das alles unter der Haube macht^^
Nachteil an dem Framework sind die langen Startzeiten. Möchte ich das neue Projekt auf ner Art Mikroarchitektur aufbauen und das ganze in Containern deployen, so benötigt jeder gestartete Container über ne halbe Minute Startzeit, was bei automatischen Loadbalancern/Container-Nachladeeinheiten sich eher negativ auswirkt------> siehe google Cloud
Zum Design:
Ich würde auf sogenannte transactionale Scripts (prozeduraler Stil setzen und bin so nicht auf das "pseudo-oo" angewiesen, was meiner Meinung nach nicht wirklich viel Sinn ergibt (siehe hierzu einen anderen Thread von mir))
Was mir an PHP gut gefällt sind die assoziativen Arrays. Die habe ich in JAVA so leider nicht (Vllt. schreibe ich mir einen Art präprozessor um mir diese Funktionalität auch in Java zu ermöglichen^^......... der präprozessor wandelt das ganze dann einfach in klassen um^^)
Ich glaube diese assoziativen Arrays sind neben der schwachen typisierung von PHP ein Grund der schnellen Entwicklung in PHP
Also was habe ich vor:
In Java mit nem Art präprozessor (für assoziative arrays) und ohne grossartigen Frameworks, also mit jersey+ hibernate mein nächstes Webprojekt basteln, ist das sinnvoll?
Also was ich noch nicht gesagt habe, das nächste Webprojekt basiert auf einer REST-Schnittstelle und sollte eben auch horizontal gesplittet (<- Mikrorchitektur) konstruriert werden/ werden können.
Eventuell schreibe ich mir hier noch was eigenes um noch komprimierter, schneller Daten auszutauschen, JSON in Rest, überträgt mir da noch zuviel "Müll"^^
Frontend: REACT oder was Vergleichbares.
Naja also würde ich in Java nicht viel anderes verwenden wie in PHP auch. Würde vermutlich auch ähnlich programmieren.
Was ich in Java zudem noch hätte wären halt ThreadPools, wo ich Worker laufen lassen könnte, um tasks zu schedulen........... das finde ich geht in Java schon besser wie wenn ich via Cronjobs workerThreads in php starten müsste
Als Datenbank/Datenbanken MySql + irgendwelche NoSql-Datenbanken und dann noch Memcache, für gecachten State, der dann von mehreren "Serverinstanzen" verwendet werden kann
Kein Session-Sate, ich würde JWT verwenden.
JA soweit die Idee
Jetzt die Frage an euch, ist das sinnvoll, das so zu machen, oder soll ich doch lieber PHP verwenden, weil es schneller ist?, schneller zu programmieren ist?
Würdet ihr das ganze designtechnisch anders machen?
Würdet ihr euch globige Frameworks ins Haus holen? Also sowohl in Java als auch in PHP........... wobei ich ja entsprechende Module schon verwende, nur nicht als zusammenhängendes Framework
Ein Request-Lifecycle von mir sieht so aus: Request via HTTP, oder sonst was -> FilterSchicht (die schon gleich mal ein paar validate-checks vornimmt, JWT-token analysiert, und schon mal grobgranular checkt ob der REST-Endpoint mit entsprechender Berechtigung überhaupt aufgerufen werden darf) -> REST-Endpoint -> verarbeitung des Request im prozeduralen Stil, also ein paar Service-Methoden-Aufrufe, die dann eventuell ein paar JDBC, oder Hibernate Dinge auf der Datenbank ausführen, Cachen, etc pp -> JSON oder ähnliche Antwort zurück an den Request-Anfrager -> ENDE
(also jetzt mal ganz vereinfacht^^)
Wie würdet ihr die performance von PHP, JAVA einschätzen, wenn man es so oder so macht,
- also mit Frameworks
- keine frameworks, eher leichtgewichtig, einfach Database Requests und paar security/ACL filter
Also auch gerne ein paar Kritiken zum angedachten Architekturmodel/plan, Design
ja soweit mal
lg knotenpunkt
EDIT: was ich an spring nicht so toll finde: so einen request-lifecycle hat man schnell selbst programmiert, da benötigt man mehr Einlesungszeit, um auch wirklich alles aus Spring rausholen zu können, bzw. sein Wissen dahin gehend erweitert zu haben, um zu wissen wie man Feature XYZ implementieren kann, das nicht dem default verhalten von Spring folgen soll
Kommentar