"We are back" « oc.at

S: Perfekte Sprache für Cross-Plattform Web-Backend

XeroXs 25.02.2016 - 16:16 10208 55
Posts

DKCH

Administrator
...
Registered: Aug 2002
Location: #
Posts: 3322
für "einfach laufen" find ich persönlich ein war/ear und einen servlet container (oder auch eine konstruktion mit jsvc/tomcat) gar nicht so schlecht - auch wenn die entwicklung der diskussion von "einfach, cross platform" hin zu erlang und go einen nicht zu leugnenden unterhaltungswert bietet.
imho: für cross platform würd ich bei etwas bleiben, das auf der JVM lauft, und eher mal richtung groovy (oder wenn zeit keine rolle spielt scala) schaun. zum thema performance: ich denke, man kann mit spring mvc schnelle sachen bauen und mit python/erlang/whatever langsame... aber startup bzw die zeit bis der jit mal gewerkt hat ist sicher a bissl zacher, das stimmt

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Zitat von DKCH
für "einfach laufen" find ich persönlich ein war/ear und einen servlet container (oder auch eine konstruktion mit jsvc/tomcat) gar nicht so schlecht - auch wenn die entwicklung der diskussion von "einfach, cross platform" hin zu erlang und go einen nicht zu leugnenden unterhaltungswert bietet.
imho: für cross platform würd ich bei etwas bleiben, das auf der JVM lauft, und eher mal richtung groovy (oder wenn zeit keine rolle spielt scala) schaun. zum thema performance: ich denke, man kann mit spring mvc schnelle sachen bauen und mit python/erlang/whatever langsame... aber startup bzw die zeit bis der jit mal gewerkt hat ist sicher a bissl zacher, das stimmt
Es kann durchaus sein dass ich mit Java eh schon bei der richtigen Sprache bin. Da bleibt aber das Problem -> Wie kann ich das möglichst einfach verpacken so dass man das einfach "installieren" kann. Einen Tomcat installieren und dann mit dem WAR file herumfrickeln will ich keinem zumuten müssen... auch wenns nicht sonderlich kompliziert wäre. Hab da nur den InstallBuilder von BitRock gefunden, aber das ist einfach viel zu Teuer für meinen Anwendungsfall.

Bezüglich Unterhaltungswert: Naja, CP ist halt ein Bonus den ich jetzt durch Java schon habe und ungern hergeben möchte. Ich kenn die anderen Sprachen einfach noch zu wenig um das wirklich einschätzen zu können, deshalb auch meine Frage hier ;) Eine JVM hat halt einen recht heftigen Memory-Footprint, da hilft alles nix. Da wäre eine modernere Sprache sicher schlanker, oder nicht?
Bearbeitet von XeroXs am 08.03.2016, 11:23

DKCH

Administrator
...
Registered: Aug 2002
Location: #
Posts: 3322
es kommt wahrscheinlich drauf an, wen du als zielgruppe hast bzw was das ding eigentlich tun soll. web backend klingt ja für mich eher nach server-anwendung, und da find ich persönlich jetzt tomcat oä installieren und war hinkopieren nicht so schlimm zu installieren/warten (und sonst kann man immer noch was gutes mit spring boot basteln). memory footprint kommt halt auf die applikation an, da find ich node.js viel schlimmer
wenns um dau-tauglichkeit geht bist du imho mit allen genannten optionen in der rue de la gack und vermutlich mit .net am besten beraten

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Um das vielleicht etwas besser zu erläutern:

Mein "Ziel" ist eigentlich so etwas ähnliches wie Owncloud - nur dass ich kein GUI benötige, sondern einfach nur ein/aus als Dienst. Clients/Apps sollen dann via Rest-API darauf zugreifen können. Nicht falsch verstehen, geht nicht um File syncing oder so..

Der einfache und naheliegende Weg wäre (auch weil ich die Sprache gut kenn) halt Java mit Spring MVC, aber aus genannten Gründen bin ich nicht sicher ob das das richtige ist. Außerdem hätt ich einfach Bock mal wieder was anderes zu lernen ;)

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Hab mir jetzt Go etwas genauer angesehen.. das passt eigentlich nicht so schlecht kommt mir vor. Was mir nicht taugt ist dass es keine vernünftige IDE zu geben scheint.. nur verschiedene Plugins die mehr oder weniger gut funktionieren.. aber gut, da hat man kommt mir vor eh überall das nachsehen wenn man eine gute Java oder .Net IDE gewöhnt ist.

Was genau meinst du DKCH wenn du sagst "entwicklung der diskussion von "einfach, cross platform" hin zu .... go einen nicht zu leugnenden unterhaltungswert bietet. "?

Neo1010

.
Registered: May 2003
Location: -
Posts: 1212
nimm nodejs und schreibs in typescript und als IDE visual studio, ich glaub das könnte dir gefallen ;)

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Zitat von Neo1010
nimm nodejs und schreibs in typescript und als IDE visual studio, ich glaub das könnte dir gefallen ;)
Puh, nein :D

NodeJS -> schon thematisiert weiter oben.. kein Fan.
Visual Studio -> Mac User

:D

pinkey

Here to stay
Registered: Nov 2003
Location: Tirol/Wien
Posts: 2276
Zitat von XeroXs
Puh, nein :D

NodeJS -> schon thematisiert weiter oben.. kein Fan.
Visual Studio -> Mac User

:D

https://www.visualstudio.com/ -> herunterladen für Mac OSX ;) is halt "nur" das Visual Studio Code. Mir gefällts. Kannst dir ja mal anschauen
Bearbeitet von pinkey am 09.03.2016, 09:55

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Danke das kenn ich eh auch, aber ist schon was ganz anderes als die angesprochene "vollwertige" VS IDE. Für Code gibts sogar ein Go Plugin, aber leider mit mäßigem Debug Support. Entwickelt jemand von euch mit Go und hat einen Tipp für eine IDE? Momentan verwend ich Eclipse mit Goclipse.. IntelliJ hätte mir besser gefallen, aber das Plugin will bei mir nicht wirklich vernünftig laufen..
Bearbeitet von XeroXs am 09.03.2016, 10:42

Longbow

Here to stay
Avatar
Registered: Feb 2003
Location: Homeoffice
Posts: 5502
Zitat von DKCH
es kommt wahrscheinlich drauf an, wen du als zielgruppe hast bzw was das ding eigentlich tun soll. web backend klingt ja für mich eher nach server-anwendung, und da find ich persönlich jetzt tomcat oä installieren und war hinkopieren nicht so schlimm zu installieren/warten (und sonst kann man immer noch was gutes mit spring boot basteln). memory footprint kommt halt auf die applikation an, da find ich node.js viel schlimmer
wenns um dau-tauglichkeit geht bist du imho mit allen genannten optionen in der rue de la gack und vermutlich mit .net am besten beraten
Was genau ist an git pull schlimmer als an Tomcat/.war File? Der Tomcat setzt sich auch nicht von allein auf, und das kann ein DAU auch nicht allein.
Bearbeitet von Longbow am 09.03.2016, 12:18

SailorChibi

Addicted
Avatar
Registered: Aug 2010
Location: Wien
Posts: 382
Ich gebe mein vote auch für python ab.
Flask + sqlalchemy als IDE Pycharm.

Edit:
Die perfekte Programmiersprache gibt es sowieso nicht.
Du musst eine finden die dir am Besten liegt. Ich bin halt auf Python gestoßen und es hat mir sofort gefallen.
Bearbeitet von SailorChibi am 10.03.2016, 07:28

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Klar, aber es gibt durchaus besser und schlechter geeignete Kandidaten.

Python, Flask und sqlalchemy werd ich mir nal ansehen. Go hats mir allerdings schon sehr angetan mittlerweile

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Hmmm.. das hat mich jetzt dann doch durchaus überrascht:

Hab gerade zwei idente Services gebaut - einmal Java einmal Go, beide laufen am selben System, zusammen mit einer MSSQL DB auf die Zugegriffen wird.

Das Service tut nicht viel - connected sich zur DB, holt eine Tabelle, wandelt sie in JSON um und gibt sie zurück.

Benchmark (in Go geschrieben :D):
Das Go Service braucht im Schnitt (200 Durchläufe) etwa 13 ms
Das Java Service braucht im Schnitt (200 Durchläufe) etwa 8 ms

Puh :/

Die Java App verwendet Spring & Hibernate - mir ist nicht ganz klar wie oft er da wirklich auf die DB zugreift..


//Edit:
Kaum macht mans richtig, hat man auch das gewünschte Ergebnis ;)

Benchmark (in Go geschrieben :D):
Das Go Service braucht im Schnitt (200 Durchläufe) etwa 2,7 ms
Das Java Service braucht im Schnitt (200 Durchläufe) etwa 7,5 ms

:eek: nice one :eek:

(Hatte ursprünglich in der Go Implementierung für jeden Request eine neue DB-Connection aufgemacht und wieder zugemacht... :bash: )

AndererseitsUnd in 3 Sekunden 3 Binaries erstellen für Linux, OSX und Windows ist schon ein Hit ;)

Code: GO
GOOS=linux GOARCH=amd64 go build -o test-linux main.go
GOOS=darwin GOARCH=amd64 go build -o test-osx main.go
GOOS=windows GOARCH=386 go build -o test-win.exe main.go
Bearbeitet von XeroXs am 10.03.2016, 17:36

DKCH

Administrator
...
Registered: Aug 2002
Location: #
Posts: 3322
Zitat von XeroXs
Was genau meinst du DKCH wenn du sagst "entwicklung der diskussion von "einfach, cross platform" hin zu .... go einen nicht zu leugnenden unterhaltungswert bietet. "?

weils ich bei den anforderungen einfach lustig find, wie man bei erlang landen kann :D kommt halt drauf an was cross platform bedeutet, für uns heissts windows/osx/linux/solaris (sparc/x86)/aix/zLinux/os390, und von daher bin ich sicher java biased ;-) und ich seh halt bei go einfach vom tooling her kein land... aber, jeder wie er mag

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Zitat von DKCH
weils ich bei den anforderungen einfach lustig find, wie man bei erlang landen kann :D kommt halt drauf an was cross platform bedeutet, für uns heissts windows/osx/linux/solaris (sparc/x86)/aix/zLinux/os390, und von daher bin ich sicher java biased ;-) und ich seh halt bei go einfach vom tooling her kein land... aber, jeder wie er mag
Ja, bei Erlang hast natürlich recht, das hab ich aber auch nicht wirklich in Betracht gezogen, hab nur bissl drüber gelesen und find die Sprache cool ;)

Mir gehts bei CP vor allem um die großen, also Linux, Debian FreeBSD, OSX, Windows. Da bin ich mit Go auf jeden Fall gut dabei. Bzgl Tooling muss ich dir Zustimmen, das ist aktuell ziemlich mühsam, aber hab jetzt IntelliJ zum laufen gebracht, und das gefällt jetzt erst einmal ganz gut.
Bearbeitet von XeroXs am 11.03.2016, 13:53
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz