Spring Framework - Wozu??

NetzUnity und Informatik-forum wurden zusammengelegt. Eine entsprechende Ankündigung wird demnächst noch folgen. Für 2025 ist hier einiges geplant! Bei Fragen bitte per DM an Maximilian Rupp wenden.
  • Hallo!

    Kennt sich jemadn mit Spring aus? Bei einem Projekt an dem ich mitarbeite wurde vorgeschlagen, doch spring zu verwenden. Ich hab mich mal ein bisschen eingelesen, verstehe aber grundsätzlich nicht, wozu man das framework braucht/was es bringt. es stehen immer nur so allgemeines blabla wie "spring helps you to create enterprise-grade applications", whatever that means.

    tutorials helfen mir auch nicht wirklich, da wird einfach eine oder zwei klassen mit spring gebaut inkl xml und dann hald dynamisch geladen... ich versteh einfach nicht wozu man das framework brauchen soll wenn es nichts weiter macht als klassen zu laden (besonders bei kleinen projekten).

  • tutorials helfen mir auch nicht wirklich, da wird einfach eine oder zwei klassen mit spring gebaut inkl xml und dann hald dynamisch geladen... ich versteh einfach nicht wozu man das framework brauchen soll wenn es nichts weiter macht als klassen zu laden (besonders bei kleinen projekten).

    frag doch mal die leute, die es vorgeschlagen haben, was sie sich davon versprechen. ich halte es bei einem "kleinen" projekt für riskant, ein framework zu verwenden, welches das halbe team noch nicht einmal kennt (falls das bei euch der fall ist).

    lg

  • ich halte es bei einem "kleinen" projekt für riskant, ein framework zu verwenden, welches das halbe team noch nicht einmal kennt (falls das bei euch der fall ist).

    ich denk es hat uns nichtmal bei sepm wirklich was gebracht, kanns zwar selbst nicht klassifizieren, aber das sollte ja eine "mittelgroße" applikation gewesen sein..

  • ich denk es hat uns nichtmal bei sepm wirklich was gebracht, kanns zwar selbst nicht klassifizieren, aber das sollte ja eine "mittelgroße" applikation gewesen sein..

    also ganz ehrlich gesagt würde ich das was in sepm gecodet wird in keinster weise als "mittelgroß" bezeichnen. Spring wird mMn erst bei projekten wirklich interessant, die über längere zeit gewartet und weiterentwickelt werden müssen. zusätzlich muss eine gewisse heterogenität der komponenten gegeben sein.

    greetz


  • also ganz ehrlich gesagt würde ich das was in sepm gecodet wird in keinster weise als "mittelgroß" bezeichnen. Spring wird mMn erst bei projekten wirklich interessant, die über längere zeit gewartet und weiterentwickelt werden müssen. zusätzlich muss eine gewisse heterogenität der komponenten gegeben sein.

    greetz



    hast du QSE oder INSO gemacht, wenn zweiteres dann ist klar das du es nicht als mittelgroß bezeichntest ;)

    bei 120k lines of code und ~20 DAOs wirds ohne Spring spaßig ;), in dem Fall möcht ich auf Spring net verzichten.

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.


  • bei 120k lines of code und ~20 DAOs wirds ohne Spring spaßig ;), in dem Fall möcht ich auf Spring net verzichten.


    mal überlegen: 120k LOC, 6 menschen, 3 monate zeit (weil eingangsphase/einzelbsp dauert mind. 1 monat).
    macht pro person 20k LOC.
    macht pro person und monat ca. 6500 LOC
    macht pro person und woche ca. 1600 LOC
    rechnet man jetzt noch mind. 1.5 monate planungsphase, dann hat jeder mindestens 3500 zeilen code pro woche getippt. und das 6 wochen lang.

    was ich mir jetzt denk schreib ich lieber nicht her.

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

  • mal überlegen: 120k LOC, 6 menschen, 3 monate zeit (weil eingangsphase/einzelbsp dauert mind. 1 monat).
    macht pro person 20k LOC.
    macht pro person und monat ca. 6500 LOC
    macht pro person und woche ca. 1600 LOC
    rechnet man jetzt noch mind. 1.5 monate planungsphase, dann hat jeder mindestens 3500 zeilen code pro woche getippt. und das 6 wochen lang.

    was ich mir jetzt denk schreib ich lieber nicht her.

    naja, bisschen verschätzt, aber die größenordnung stimmt. bei uns waren es zb in se2 56586 LOC in ca 4 monaten. und das war c++, in java/c# produziert man ja noch viel schneller code. eine entity mehr und die ide schreibt schon wieder fleißig viele zeilen...

    lg

  • naja, bisschen verschätzt, aber die größenordnung stimmt. bei uns waren es zb in se2 56586 LOC in ca 4 monaten. und das war c++, in java/c# produziert man ja noch viel schneller code. eine entity mehr und die ide schreibt schon wieder fleißig viele zeilen...

    lg


    also [tex='\pi'][/tex]

    * :thumb: habt ihr auch etwa 1000 zeilen code pro nase und woche fabriziert (mehrnasrige menschen seien einfach gezählt), wenn man von ca. 1.5 bis 2 monaten planung und 6 menschen ausgeht.

    zum vergleich: unser ASE-projekt hatte ca. 6000 LOC (4 personen, 4 monate). => ca. 100 LOC/person und woche

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

  • Bei großen Projekten entsteht die meiste Komplexität (und damit die meiste Arbeit) durch die Abhängigkeiten zwischen den einzelnen Komponenten. Wenn eine von 4 Komponenten jede der anderen 3 Komponenten braucht, dann kannst Du z.b. keine isolierten Tests machen, oder die einzelnen Komponenten austauschen, oder sie unabhängig voneinander deployen.

    Bei dynamisch typisierten Sprachen stellt sich das Problem praktisch gar nicht. Aber bei Java ist es ein sehr großer Vorteil, wenn Du die Abhängigkeiten zwischen den einzelnen Modulen deines Programm dynamisch und auch zur Laufzeit, "von außen" zusammenkleben kannst.

    Spring bietet zudem auch noch sehr viele Bibliotheken an, die teilweise sehr gut funktionieren. Aber die wesentliche Eigenschaft ist eben jene Inversion of Control. Natuerlich kostet das Pflegen der Configuration und das gewissenhafte Vermeiden von direkten Abhaengigkeiten auch Zeit. Darum zahlt es sich eben erst bei einer gewissen Projektgröße aus.

    lg, Benjamin Ferrari, bookworm.at

    3 Mal editiert, zuletzt von a9bejo (15. Juli 2008 um 11:23)

  • Ein weiterer Vorteil von Spring ist die Zusammenarbeit mit AspectJ und die dadurch einfache Erweiterung von Java um aspektorientierte Programmierung. Das ist mMn der größte Nutzen von Spring da man DI auch manuell ohne Framework oder mit anderen Frameworks gut hinbekommt. Bei zentralen Logging/Error-Handling/... ist Aspektorientierung unschlagbar.



  • ich weiß nicht was du mir mit dieser Schlussrechnung und im speziellem dem letzten Satz mitteilen willst. Defakto entspricht die Angabe der LOC dem tatsächlichem Abgabestand unseres Projektes. Mit geschätzten 185h pro Mann im Durschnitt.

    Zitat

    ich glaube mkdigital wollte so etwas wissen, also warum genau es in diesem fall spaßig wird.

    lg



    sorry da ich keine exakte Erklärung abgeben konnte wollt ichs lassen, aber ich kanns an dem DAO Beispiel schon erläutern.

    Mein Vorposter hats allgemein eh schon gut auf den Punkt gebracht (a9bejo) :thumb:

    Im Prinzip ermöglicht Spring eine hohe Widerverwendbarkeit/Austauschbarkeit von Code da du Module/Komponenten relativ einfach den entsprechenden Anforderungen wie sie benötigt werden anpassen kannst. => Tausche DB / DAO / GUI etc....

    Im speziellen bei dem DAO Beispiel wir haben bei unseren Projekt auf einem Cache und der eigentichen Datenbank gearbeitet, mit Spring wars dann relativ einfach zwischen den Databases zu switchen je nachdem in welchen Zustand sich die Applikation befindet. Außerdem kannst du in den DAOs relativ einfach deine SQL Statements reininjected ohne im Code selbst einen einzige SQL-Befehl hard-gecodet reinzuschreiben. Du hast deine ganzen Statements zB in einem File und kannst diese dort an einer Position relativ einfach anpassen ohne im Code rumsuchen zu müssen. Selbst wenn sich am SQL Statement was ändert is im Regelfall nur relativ wenig bzw. gar nichts am Code zu ändern. Was im Gegensatz zu einem normalen DAO ein ziemlicher Vorteil ist, da man hier eine sehr saubere Trennung von Queries und Code hat und der Code selbst bei komplexen Statements übersichtlich bleibt ;).

    thex

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

    7 Mal editiert, zuletzt von Thexman (15. Juli 2008 um 11:49)

  • ich weiß nicht was du mir mit dieser Schlussrechnung und im speziellem dem letzten Satz mitteilen willst. Defakto entspricht die Angabe der LOC dem tatsächlichem Abgabestand unseres Projektes. Mit geschätzten 185h pro Mann im Durschnitt.


    sorry wenn ich extrem off topic bin, aber du willst doch nicht allen ernstes behaupten, dass jeder durchschnittlich 100 zeilen code pro stunde geschrieben hat? da ist noch keine minute planung, dokumentation, kommunikation, koordination, testen, evaluierung usw. drin.
    sei mir nicht bös, wenn ich
    a) die vorgehensweise
    b) die qualität
    sehr stark kritisieren möchte, ohne auch nur einen blick auf euren code bzw. euer programm geworfen zu haben.

    ich kann mir weiters nicht vorstellen, dass das QSE-institut (die mMn eh sehr konservativ sind, was die vergabe von projekten betrifft), ein derartiges monster für SEPM bewilligt. nicht einmal ASE, ja auch kein projektpraktikum wird so einen umfang haben.

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

  • First of all ich kann dir in dem Fall nur unsere LOC sagen die Maven ausspuckt d.h. das sind alle Lines die in einem Javafile (+eventuelle Springs beans etc.) drinnen sind für alle Files des Projekts, ich geh jetzt einfach mal davon aus das keiner irgendwo in unserem Projekt eine Datei mit 50000 LOC versteckt hat.

    Also zu des 120k LOC gehören dementsprechend auch die JUnit Tests von denen unsere Projekt laut letztem Stand knapp über 800 hat und die JavaDoc die sicher nicht wenig ausmacht (aber sicher net mehr wie 10k).

    Was du die ganze Zeit machst ist das mMn sehr leicht gemachte Umrechnen von gesamtanzahl auf Person. Naja wenn du eine Methode schreibst die einige Abfrage und schleifen drin hat dann verhaust du alleine schon wenn du eine saubere Strukturierung haben möchtest Lines.

    Ich geh mal davon aus das du sauberen JavaStyle schreibst und eine schleife mit abfrage nicht so aussieht

    while(){if(){.....}else{.....}}

    Ich darf dich aber gerne dazu einladen dir den code durchzusehen sofern es dir schwer fällt dich an Hand meiner Ausführung davon zu überzeugen.

    Und jetzt mal auf die DAOs als Beispiel bezogen, da Schreib ich dir in der der Stunde 2 - 3 davon mit jeweils 600 Zeilen Code (weil sie sich einfach so ähnlich sind C&P). Damit hätten wir dann schon einmal das 18x was du vorgegeben hast. Ähnliches gilt für BOs.

    Thex

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

    2 Mal editiert, zuletzt von Thexman (15. Juli 2008 um 12:11)


  • Und jetzt mal auf die DAOs als Beispiel bezogen, da Schreib ich dir in der der Stunde 2 - 3 davon mit jeweils 600 Zeilen Code (weil sie sich einfach so ähnlich sind C&P). Damit hätten wir dann schon einmal das 18x was du vorgegeben hast. Ähnliches gilt für BOs.

    :omg:

    Zitat von Bill Gates


    Measuring programming progress by lines of code is like measuring aircraft building progress by weight.


  • xD war ein Beispiel was zeigt das 100lines of code pro Stunde relativ sind ;)

    Das LOC nicht gleich Qualität aussagt is mir klar das war auch zu keinem Zeitpunkt in diesem Thread meine Intention

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!