[eclipse][software][business][blogs, wikis etc][fachbücher]
moin moinekkehardmeine arbeitcompetenceimpressumressources
 

home (moin moin)software


da ich selbst über 20 jahre immer wieder erp - systeme, bzw. warenwirtschaftsanwendungen und früher auftragsbearbeitungssoftware entwickelt habe, kenne ich mich speziell im markt für mittelständsiche erp - lösungen aus, mit den anforderungen der anwender und den leistungen der konkurrenzprodukte.
das bezieht sich auch auf alles-drum-herum: sei es schnittstellen (EAI), pos - systeme, finanz- und lohnbuchhaltungssoftware...


office software nutze ich selbst natürlich zur organisation meiner aufgaben. dabei kenne ich mich in den offioce-lösungen von microsoft, anwendungen für apple macintosh und besonders mit open source lösungen wie "open office" gut aus.


der große vorteil an java ist, daß es zu fast jedem thema und jeder problematik eine lösung, ein framework, eine api, eine implementierung gibt, die man nutzen kann.

das schwierige ist, dass es zwar jeweils eine api (schnittstellenbeschreibung) gibt, aber viele frameworks mit vielen implementierungen.

und: fast täglich kommen neue entwicklungen hinzu.

da heißt es, den überblick zu bewahren und sich die passenden teile aus dem kuchen herauszusuchen. aber: es sollte auch zusammenpassen. und die  community sollte aktiv sein.

und besonders bei open source projekten ist es wichtig, unter welcher open source lizenz steht das jeweilige produkt ? leider gibt es auch bei den lizenzen eine vielfalt und einige sind nicht miteinander kompatibel. zu dem thema werde ich noch in meinem blog stellung nehmen.

ich habe mehrere jahre intensiv damit zugebracht, frameworks zu testen und zu vergleichen. daraus habe ich für mich ideale kombinationen herausgesucht. natürlich wieder ganz subjektiv.

  • applikations - server (JSE, JEE)
    tomcat als sevlet engine. es gibt ja viele vergleichbare produkte, aber für mich steht der tomcat unangefochten an der spitze. er wird seit jahren kontinuierlich weiterentwickelt und ist in vielen kommerziellen projekten im einsatz.
    ich nutze tomcat als servlet engine für webanwendungen und web-services (mit axis). wenn sich der statische inhalt in grenzen hält, dann kann der tomcat auch als http-server arbeiten - es hängt aber vom konkreten projekt ab, ob der einsatz des tandems apache http - tomcat performanter ist.
    tomcat war zunächst ein jakarta-apache projekt und ist jetzt zu einem apache top level projekt aufgestiegen.
    ein interessantes projekt ist das deutsche centaurus projekt, das u.a. von peter roßbach mit entwickelt wird und speziell das hosting von tomcat sicherer und komfortabler macht.
    in meinen projekten war als applikationsserver bisher der tomcat ausreichend, da ich ejb's 2.x soweit als möglich vermieden habe. dies hat sich geändert mit ejb 3 und der java JPA. wird also jetzt ein JEE - server benötigt, dann stehen zwei leistungsfähige open source lösungen bereit: Jboss und Geronimo. Geronimo ist durch die Apache Lizenz flexibler einzusetzen, Jboss ist weiter entwickelt und vor einiger Zeit von RedHat übernommen worden.

  • ejb's & co
    der schlüssel zu einem guten persistenzframework liegt in einem leichtgewichtigen server-container, der in der lage ist, mit normalen java objekten umzugehen, den sog. POJO's (plain old java objects).
    das springframework hat sich in den letzten jahren zum technologieführer unter den leichtgewichtigen containern entwickelt. spring ist sehr leicht zu implementieren und verursacht keine abhängigkeiten vom springframework. jeder kann sich auch aus dem framework die benöigten komponenten zusammensuchen und kombinieren und leicht gegen andere tauschen.
    spring integriert hibernate hervorragend und kennt deklarative transaktionen. durch hibernate wiederum ist man relativ unabhängig von der datenbank im backend. spring beinhaltet auch remoting technologien und kann z.b. hessian für remote zugriff per http nutzen. dadurch können zb rich clients per http angebunden werden und als server ist weiterhin nur der tomcat notwendig.
    ein wichtiger punkt ist natürlich immer die security - da gibt es für spring das acegi security framework als ergänzung.
    seit dem erscheinen von ejb 3 und dem java persistence framework (JPA) ist es jetzt möglich, mit EJBs effizient und performant zu arbeiten, da EJB3  mit 'normalen'  java objekten (POJO's) arbeitet und vieles aus hibernate eingeflossen ist. sofern die EJB3 / JPA - spezifikation nicht ausreicht, kann hibernate 3 ergänzend genutzt werden.

  • die view... die gui...
    die persönlichen erfahrungen speziel aus dem ff-ecommerce projekt haben die grenzen aufgezeigt, die eine browser - anwendung an komfort bieten kann. ...und sie haben den immensen aufwand gezeigt, der betrieben werden muss, wenn man eine webanwendung browser- und betriebssystemneutral gestalten will.
    mein fazit aus den letzten jahren: eine webanwendung ist wichtig und sollte auch in jedem konzept enthalten sein, um den zugriff auf die meisten funktionen über einen browser zu ermöglichen. für die tägliche arbeit aber z.b. in der auftragsabwicklung benötigt man mehr komfort, um zufriedene mitarbeiter zu bekommen, die effektiv arbeiten.
    aufgrund der intensiven beschäftigung mit eclipse verfolge ich den rich client ansatz des eclipse RCP. diese anwendungen unterscheiden sich nicht von 'normalen' desktop anwendungen, sind performant und sehen so aus, wie alle anderen anwendungen auch. die erste installation kann über java webstart erfolgen, also über einen browser. die programm - aktualisierungen können automatisch durch update-sites erfolgen, d.h. auch eine solche rich client anwendung benötigt zero administrationsaufwand im verteilten netzwerk.
    für die webanwendungen gibt es viele moderne und gute frameworks (struts, tapestry, spring mvc, ...) ich bin kein struts - spezialist, denn meine persönliche vorliebe gilt den java server faces (jsf), deren komponentenorientierter ansatz sich sehr gut in einer mehrschichtigen anwendung mit webclients und rich clients einbinden läßt. für jsf gibt es außer der sun - referenzimplementierung weitere frameworks, die auf JSF basieren. ich bevorzugte bisher das apache MyFaces framework, ergänzt um oracle ADF faces components. neue projekte setze ich jetzt aber mit jBoss Seam als (JSF)-webframework ein. jboss seam erleichtert die programmierung und bietet durch mehr scopes (conversation) eine leichtere umsetzung der business - prozesse in eine web-anwendung. ergänzt mit ajax bekommt man auch performante und komfortable gui's im browser. naturgemäß nicht direkt vergleichbar mit dem komfort einer rcp - desktop - lösung, aber es ergänzt sich gut, da man ja in kaum einer anwendung heutzutage mehr ohne web-anteile auskommt.

  • das model... die datenbank...
    welche datenbank sollte im backend eingesetzt werden ? das läßt sich nicht so einfach beantworten, da jedes projekt, jede anwendung andere anforderungen hat. ausserdem kommt es häufig darauf an, welche datenbanken bereits im hause sind, welches know how vorhanden ist und welches budget zur verfügung steht.
    in meinem vorletzten großen projekt ff-ecommerce habe ich gute erfahrungen mit einer objekt-orientierten datenbank (oodb) gemacht: fastobjects von poet. das schöne: die objekt-strukturen werden 1:1 in der datenbank abgebildet. wenn man mit JDO auf die datenbank zugreift, ist man auch (theoretisch ;-) unabhängig. oodb's haben sich aber nicht am markt durchsetzen können und poet wurde von versant aufgekauft und die zukunft der datenbank ist nicht ganz geklärt. JDO wiederum entfaltet seinen ganzen charme m.e. mit oodb's - die umsetzung auf rdbms ist doch etwas hoplrig bzw. nicht performant.
    somit habe ich zwei entscheidungen getroffen: a) rdbms einsetzen und b) hibernate als mapping-tool. hibernate schafft die unabhängigkeit von der darunter liegenden datenbank und ist auch als ejb3 / jpa - provider zu nutzen. somit nutzt man den standard und ist offen für erweiterungen aus der langjährigen praxis von hibernate.
    als rdbms habe ich mit oracle und db2 sehr gute erfahrungen gemacht, wenn es um kommerzielle datenbanken geht und das budget groß genug ist.
    als open source rdbms ist mysql weit verbreitet und eignet sich sicher auch für eine vielzahl von anwendungen, speziell seitdem die version 5 endlich trigger, views und stored procedures unterstützt.
    für eine kritische anwendung mit vielen parallelen transaktionen und absturzsicherheit setze ich falls eine open source lösung gewünscht wird, die maxdb (vormals sapdb) ein, die ebenfalls von mysql vermarktet wird. bei kleinen und mittleren unternehmen setze ich mittlerweile auf die db2 version 9 community edition: diese datenbank ist frei verfügbar und die limitierungen (max. 2 prozessoren und max. 4 GB RAM) sind mehr als ausreichend. für die oracle community edition trifft dies nicht zu.

  • die modellierung... die generierung...
    beim entwicklungsprozeß bevorzuge ich den modellgetriebenen ansatz. mit model-driven-architecture (mda) beschäftige ich mich jetzt seit mehr als 5 jahren in der praxis. mda und mdsd (model-driven-software-development) sind für mich ein weiterer großer schritt in der software-entwicklung. mda / mdsd bedeutet nicht, daß der entwurf von software - architekturen einfacher wird ;-)
    aber man muss sich von anfang an gedanken machen über das modell, die bedingungen und transformationsschritte. ein modellgetriebenes projekt ist unabhängiger von technischen änderungen, da die technische implementierung ja getrennt vom modell ist. jeder, der schon business - software erstellt hat, weiß daß sich die geschäftslogik in vielen bereichen nicht sehr geändert hat in den letzten jahren, die technik zur umsetzung aber ständig im fluß ist.
    die umsetzung der modelle und metamodelle (das sind modelle von modellen) erfolgt meist in UML.
    als uml tool gefällt mir omondo sehr, da es total in eclipse integriert ist. wird omondo innerhalb eines open source projektes eingesetzt, dann gibts auch eine freie lizenz, ansonsten sind die kosten je developer doch ziemlich gesalzen. daher setzte ich bei kommerziellen projekten bisher den enterprise architect ein, ein super tool zu günstigen preisen, das den gesamten uml2 - umfang abdeckt. nachteil: es gibt keine mac - version. eine lohnenswerte alternative ist magic draw: die community edition erlaubt beliebig grosse klassendiagramme, was für viele anforderungen ausreicht. magic draw ist eine java anwendung und läuft auch unter OSX !
    das uml-tool liefert xmi - dateien, die dann wiederum input für einen generierungsprozess sein können. im ff-ecommerce projekt habe ich den arcstyler von io-software eingesetzt. als generator - framework gefällt mir jetzt - ein paar jahre später - am besten der openArchitectureWare (oAW) generator. oAW hat eine hohe lernkurve, aber bietet auch sehr viel und ist enorm flexibel, unterschiedlichste architekturen abzubilden.
    gerne trete ich in anwendungsprojekten den beweis an, wie gut und schnell man mit einem modellgetriebenen ansatz projekte realisieren kann.

  • social networking... blogs... wikis... messaging...
    ich muss zugeben, dass ich lange zeit die neuen möglichkeiten der sozialen software nicht wahrgenommen habe. dafür bin ich heute umso begeisterter. social networking - oder auch jeder kennt jeden um 6 ecken. wer mitglied beim netzwerk openbc ist, der kann sich davon überzeugen. egal wen man sucht oder findet, man kennt ihn/sie meistens um weniger als 6 ecken und es führen immer mehrere wege vom einen zum anderen.
    aber ich möchte hier ja über software reden. weblogs, auch blogs genannt, sind vielleicht am meisten bekannt. einige infos zu dem thema finden sie auch unter blogs. ich habe blogs bisher nur als leser oder kommentierer genutzt - jetzt führe ich mein eigenes: ekkes corner. mein blog lasse ich bei jroller hosten - und das mit gutem grund. jroller nutzt als software roller, eine java - blogserver - anwendung. wer überlegt, sich einen eigenen blogserver aufzubauen, dem empfehle ich roller: open source, stabil, zukunftssicher (der hauptentwickler steht bei sun auf der payroll)
    das passende wiki gibt es auch dazu: jspwiki.
    instant messaging (im) nutzen viele zum chatten, dabei kann es auch hervorragend kommerziell genutzt werden, zb. in der hotline zur kundenbetreuung. natürlich braucht man dann auch einen eigenen server für die messages. ein guter server ist jive messenger. dieselbe firma liefert auch eine open source xmpp api - damit können sie sich ihren eigenen java- messenger - client bauen. wenn das alles zb. in eclipse integriert sein soll, helfe ich gerne.

  • open source software
    wenn sie meine softwareauswahl genauer betrachten, dann wird ihnen auffallen, dass die meiste software als open source software (oss) angeboten wird. ich bin ein großer verfechter von open source lösungen - gerade im kommerziellen einsatz. immer mehr firmen müssen softwareprojekte mit geringerem budget realisieren. da liegt es nahe, open source zu nutzen, um lizenzkosten zu sparen. aber open source ist mehr als lizenzfrei. open source bedeutet auch transparenz und kontrolle über den code. open source lebt durch aktive communities und jeder sollte sich soweit möglich, einbringen.
    open source ist aber auch nur software, die von menschen erstellt wird. da gibt es gute und "schlechte" projekte. wird oss in geschäftskritischen anwendungen eingesetzt, dann sollte man die software sehr sorgfältig auswählen und sich gedanken über den support machen. ein weiterer wichtiger punkt ist die lizenzierung. es gibt oss - lizenzen wie sand am meer und nicht alle können kombiniert werden. ich berate gerne bei der auswahl von open source frameworks und stelle mein wissen zur verfügung.
    ein beispiel für den einsatz von open source technologien für eine geschäftskritische erp - anwendung ist das von mir initiierte projekt erpos - erp open source.
    ich nutze open source auch anderweitig: firefox als browser, thunderbird als mailprogramm und open office 2.0 als office-tool.


zurück zu
competence.

                               (c) 2007 ekkehard gentz ... sitemap ... wichtige hinweise ...