Gemeinsam Java Spring lernen

oder in Java mit Lombok:
Code:
@Data class Punkt { int x, y; }
Dann hast du Konstruktor, getter, setter, equals, hashcode, toString... ;)
 
Zuletzt bearbeitet:
schön?

Ergänzung ()

rob- schrieb:
Hm ich fand Java immer mitunter am einfachsten, da man es grade wegen Objektorientierung super aufteilen kann. Jeder bekommt sein Modul, ein UML Chart wie die Methoden zu heißen haben und schon kann man anfangen.
Es geht nicht darum, dass Objektorientierung generell schlecht ist. Es geht darum, dass es nicht für jedes Problem die beste Lösung ist. Abgesehen davon, dass die Objektorientierung von Java ziemlich bescheiden ist.

rob- schrieb:
Java wirkt nur aus Sicht Einzelner Programmierer weniger schön, wobei es immer noch schöner ist als alle anderen gebräuchlichen Sprachen
Keine Ahnung, was für Dich gebräuchlich ist aber schon bei einer einfachen Klassendefinition wirds ja umständlich:
Code:
class Punkt {
  int x;
  int y;
  public Punkt(int x, int y) {
     this.x = x;
     this.y = y;
  }
}
Wie oft ich da allein das x und y tippen muss. Und ich hab jetzt noch nicht mal Getter und Setter die kommen ja noch dazu (hierfür bietet C# ja wenigstens noch Properties an).

Das Ganze würde in Racket Scheme folgendermaßen aussehen:
Code:
(struct Punkt (x y))
Oder, um noch die Typdeklaration mit unter zu bringen:
Code:
(struct Punkt ([x : Integer] [y : Integer]))

rob- schrieb:
nur das hat halt typische Microsoft Grenzen und ist raus bevor es überhaupt eine Chance bekommt.
Was auch immer Du meinst, aber Mono (www.mono-project.com) gibts ja nun schon eine ganze Weile und inzwischen gibt Microsoft ja auch die .NET-Plattform nach und nach frei: github.com/Microsoft/dotnet

Gruß
MichaelK
Ergänzung ()

NoSpace schrieb:
Teile zwar deine Meinung nicht aber eins ist klar soetwas wie Spring/Java EE setzt man nicht für eine kleine Webseite ein
Das ist mir schon klar.

NoSpace schrieb:
, sondern für Anwendungen die sehr komplex sind und bei denen Anforderungen gestellt werden die andere Sprachen gar nicht abdecken. Stichwort: Transaktionssicherheit
Gerade wenn Applikationen komplex werden fängt man sich ja Probleme mit Java ein. Gerade dann fallen einem nämlich viele Sachen auf die Füße.


NoSpace schrieb:
Zusätzlich bedeutet Spring nicht Java only!
Mit Spring AOP (AspectJ) steht eine powervolle aspektorientiere Programmiersprache zu Verfügung die für die Lösung von Cross-Cutting Concerns geschaffen wurde.
Als ich das erste Mal mit AspectJ experimentiert hab, dass muss so Anfang 2000 gewesen sein (damals war ich noch hauptsächlich in Java unterwegs). Ich fand es ganz nett, aber letztlich ist das auch wieder nur eine Technologie, um Java-Schwächen auszugleichen.

Und letztlich hat sich AspectJ ja auch nie so richtig verbreitet. Es gibt halt wieder ne neue Syntax und man braucht ein extra Compiler und das macht dann auch schnell mal das Debugging etwas anstrengend. Das ist wohl auch der Grund, weshalb Spring meines Wissens nach nicht das komplette AspectJ unterstützt.

Ich komm da jetzt grad drauf, weil ich oben schon mal ne Zeile Lisp geschrieben hab. Irgendwie hat sich wohl dann auch mal die Mühe gemacht und AspectJ nach (Common) Lisp portiert (bin da mal auf CLiki drüber gestolpert). Lustigerweise ist da gar kein extra Compiler vonnöten, sondern man bindet den Kram einfach als Library ein und fertig. Funktioniert dadurch auch in der Lisp-IDE ohne das man dafür ein Plugin schreiben muss usw. Die Sourcen sind da auch weniger als 100kB groß während schon die ersten AspectJ-Versionen mehrere MBs auf die Waage bringen.

Gebraucht habe ich es in Lisp noch nicht wirklich, ist aber ein schönes Beispiel dafür wie umständlich man bestimmte Dinge in Java lösen muss.

Gruß
MichaelK
Ergänzung ()

rob- schrieb:
Hm ich fand Java immer mitunter am einfachsten, da man es grade wegen Objektorientierung super aufteilen kann. Jeder bekommt sein Modul, ein UML Chart wie die Methoden zu heißen haben und schon kann man anfangen.
Es geht nicht darum, dass Objektorientierung generell schlecht ist. Es geht darum, dass es nicht für jedes Problem die beste Lösung ist. Abgesehen davon, dass die Objektorientierung von Java ziemlich bescheiden ist.

rob- schrieb:
Java wirkt nur aus Sicht Einzelner Programmierer weniger schön, wobei es immer noch schöner ist als alle anderen gebräuchlichen Sprachen
Keine Ahnung, was für Dich gebräuchlich ist aber schon bei einer einfachen Klassendefinition wirds ja umständlich:
Code:
class Punkt {
  int x;
  int y;
  public Punkt(int x, int y) {
     this.x = x;
     this.y = y;
  }
}
Wie oft ich da allein das x und y tippen muss. Und ich hab jetzt noch nicht mal Getter und Setter die kommen ja noch dazu (hierfür bietet C# ja wenigstens noch Properties an).

Das Ganze würde in Racket Scheme folgendermaßen aussehen:
Code:
(struct Punkt (x y))
Oder, um noch die Typdeklaration mit unter zu bringen:
Code:
(struct Punkt ([x : Integer] [y : Integer]))

rob- schrieb:
nur das hat halt typische Microsoft Grenzen und ist raus bevor es überhaupt eine Chance bekommt.
Was auch immer Du meinst, aber Mono (www.mono-project.com) gibts ja nun schon eine ganze Weile und inzwischen gibt Microsoft ja auch die .NET-Plattform nach und nach frei: github.com/Microsoft/dotnet

Gruß
Andy
Ergänzung ()

NoSpace schrieb:
Teile zwar deine Meinung nicht aber eins ist klar soetwas wie Spring/Java EE setzt man nicht für eine kleine Webseite ein
Das ist mir schon klar.

NoSpace schrieb:
, sondern für Anwendungen die sehr komplex sind und bei denen Anforderungen gestellt werden die andere Sprachen gar nicht abdecken. Stichwort: Transaktionssicherheit
Gerade wenn Applikationen komplex werden fängt man sich ja Probleme mit Java ein. Gerade dann fallen einem nämlich viele Sachen auf die Füße.


NoSpace schrieb:
Zusätzlich bedeutet Spring nicht Java only!
Mit Spring AOP (AspectJ) steht eine powervolle aspektorientiere Programmiersprache zu Verfügung die für die Lösung von Cross-Cutting Concerns geschaffen wurde.
Als ich das erste Mal mit AspectJ experimentiert hab, dass muss so Anfang 2000 gewesen sein (damals war ich noch hauptsächlich in Java unterwegs). Ich fand es ganz nett, aber letztlich ist das auch wieder nur eine Technologie, um Java-Schwächen auszugleichen.

Und letztlich hat sich AspectJ ja auch nie so richtig verbreitet. Es gibt halt wieder ne neue Syntax und man braucht ein extra Compiler und das macht dann auch schnell mal das Debugging etwas anstrengend. Das ist wohl auch der Grund, weshalb Spring meines Wissens nach nicht das komplette AspectJ unterstützt.

Ich komm da jetzt grad drauf, weil ich oben schon mal ne Zeile Lisp geschrieben hab. Irgendwie hat sich wohl dann auch mal die Mühe gemacht und AspectJ nach (Common) Lisp portiert (bin da mal auf CLiki (ww.cliki.net) drüber gestolpert). Lustigerweise ist da gar kein extra Compiler vonnöten, sondern man bindet den Kram einfach als Library ein und fertig. Funktioniert dadurch auch in der Lisp-IDE ohne das man dafür ein Plugin schreiben muss usw. Die Sourcen sind da auch weniger als 100kB groß während schon die ersten AspectJ-Versionen mehrere MBs auf die Waage bringen.

Gebraucht habe ich es in Lisp noch nicht wirklich, ist aber ein schönes Beispiel dafür wie umständlich man bestimmte Dinge in Java lösen muss.

Gruß
Andy
Ergänzung ()

TheRepatriate schrieb:
@andy_m4: Du magst mit deinen Aussagen richtig liegen, aber in diesem Threat ging es darum Leute für eine "Lerngruppe" zu begeistern und nicht die tausendste Diskussion darüber loszubrechen ob nun Java gut oder schlecht ist
Da hast Du natürlich recht.
Ich werde von weiteren Offtopic-Postings versuchen abzusehen.

TheRepatriate schrieb:
Ferner liegt man arbeitsmarkt-technisch mit JavaEE und Spring sicher nicht falsch.
Auch das ist richtig.

Gruß
Andy
 
AW: schön?

andy_m4 schrieb:
Wie oft ich da allein das x und y tippen muss. Und ich hab jetzt noch nicht mal Getter und Setter die kommen ja noch dazu (hierfür bietet C# ja wenigstens noch Properties an).
Wenns nur darum geht das Objekt schön zu initialisieren gehts sogar noch einfacher =)
Code:
struct Point 
{
    public int X { get; set; }
    public int Y { get; set; }
}
Point p = new Point { X = 5, Y = 6 };
 
Zuletzt bearbeitet:
@andy_m4
Du glänzt in Sachen Java aber auch mit ziemlichem antiquiertem Halbwissen. Weder führt AspectJ ein Schattendasein, noch ist AspectJ in Spring integriert, sondern lediglich die Syntax. Auch ist kein extra Compilieren notwendig, wenn man Loadtime Weaving verwendet. Der Vorteil ist ja gerade, dass man die Advices und Pointcuts unabhängig voneinander deployen kann.

Wenn du dich schon als Oberlehrer aufspielen willst, dann erzähl wenigsten kein Stuss. :o
 
Zuletzt bearbeitet:
Hey Leute,

Bitte keine weiteren Diskussionen ob Feature X,Y in irgendeiner Sprache mögt oder nicht mögt.

Wir sind nun 6 Leute, die sich Java Spring MVC anschauen wollen und wir suchen weiter.
 
Sind nun 8, die sich gemeldet haben.
Werde so langsam nun alle kontaktieren und das Ganze ins Rollen bringen.

Suchen noch weitere Spring MVC Lernwillige :)
 
Ich bin nicht lernwillig :D , weil ich seit 4 Jahren produktiv mit Spring, Hibernate, MongoDB, Elasticsearch, Jackson, Maven, etc. pp. beruflich arbeite, aber stehe gern für Fragen bereit.

Wenn ihr neu anfangt, solltet ihr direkt auf die aktuellen Technologien setzen: Java8, Spring4, Spring Boot

Und speziell bei den NoSQL Technologien gilt die Devise: Erst Überlegen, dann das Konzept, dann die Diskussion, dann die Überarbeitung, dann noch mal drüber Schlafen, dann alles über den Haufen werfen und neu anfangen, dann ... und zum Schluss dann die Umsetzung. ;)
Da können sonst selbst kleinste Änderungen im Datenmodell einen kompletten Rewrite bedeuten wenn man Wert auf Datenintegrität legt, da es (beim Großteil der NoSQL Datenbanken) keine Transaktionen gibt. Als Belohnung kann man sein Datenmodell exakt auf den Anwendungsfall optimieren, d.h. dass man für Schreib- und/oder Leseperformance optimieren kann, indem man partielle Updates fährt oder Daten denormalisiert speichert. Damit das am Ende mit parallelen Zugriffen auch problemlos funktioniert, muss allerdings erheblich mehr Gehirnschmalz verbraten werden als bei einer SQL Lösung. Dafür muss man sich dann auch nicht mit den Eigenheiten von JPA und Hibernate rumschlagen.
 
Ja, nehmen natürlich nur die neuesten verfügbaren Techs her

Man kann sich noch anschließen :)
 
Keine Ahnung ob das hier noch gilt...
Aber ich habe dir bereits zwei Mails geschrieben, ohne Antwort.
Also push ich das hier mal :)
 
Zurück
Oben