Tekijä: Marko Seppänen
Teostyyppi: harjoitustyö
Oppilaitos: Saimaan ammattikorkeakoulu
Julkaisuajankohta: Tammikuu 2010
Kurssi: Projektityöskentely
1 Projektiehdotus
2 Taustaa
3 Java-teknologisia ohjelmistotuotannon välineitä
3.1 Alustoja
3.2 Ohjelmistokehyksiä
3.3 Irtoteknologioita
3.4 Valmiskomponenttisia
3.5 Sovelluspalvelimia
3.6 Ohjelmistoympäristöjä
Projektin nimi
Ohjelmointiyrityksen ohjelmisto- ja alustarepertuaarin analysointi ja kouluttautuminen
Lyhyt kuvaus
Yritys Oy:ssä on Oraclen tuoreimman yritysoston (Sun) jälkeen virinnyt ajatus käydä läpi heidän käyttämäänsä ohjelmisto- ja alustarepertuaaria alustojen, sovelluskehysten, ohjelmointiympäristöjen ja avainteknologioiden osalta, sekä hankkia kaikille työntekijöille sellainen lisäkoulutus, että niistä voidaan keskustella sujuvasti. Yritys Oy suomalainen ohjelmistoyritys, jonka asiakkaat ovat suuria yrityksiä ja julkishallinnon organisaatioita.
(Varsinainen projektisuunnitelma tehdään erikseen.)
Yrityksen 12-henkisellä miehistöllä on monenlaisia kompetensseja, joista osa on sellaisia, joita ei löydy kuin yhdeltä. Koska yritys on toiminut jo pitkään samalla henkilökokoonpanolla ja yrityksen työntekijät ovat kaikki myös yrityksen osakkaita, on yrityksen työntekijöiden välille kehkeytynyt luottamukselliset suhteet. Tämän luottamuksen turvin, joka sisältää myös kunkin näkemykset toisistaan uuden oppijana, on saanut heidät kollektiivisesti hyväksymään vision, jonka saavuttaminen laajentaisi heidän yhteistä kompotenssiaan ja mahdollistaisi entistäkin ketterämmät yrityksen toimintaan vaikuttavat toiminnalliset eleet ja liikkeet. Lisäksi he aikovat ottaa yritykseen mukaan uusia työntekijöitä, joille myös olisi hyödyllistä ja yrityksen kehittymisen kannalta melkeinpä välttämätöntä, saada sama perustuntemus kuin muillekin.
Yritys Oy:n työntekijät keräsivät esiselvityksen osaksi lyhyine kuvauksineen varustetun listan ohjelmistuotannon välineistä, joita heillä on a) tapana käyttää tai b) ollut haluna käyttää, mutteivat ole ehtineet opetella. Lista ei ole lopullinen, eikä se tässä muodossaan erottele tuotteiden eri versioita (viittaukset vain uusimpaan). Tarkoituksena on pyrkiä muodostamaan sellainen ohjelmistotuotannon välineiden paletti, josta a) olisi aina löydettävissä kulloisenkin asiakkaan tarpeisiin sopiva yhdistelmä ja b) josta kaikilla työntekijöillä olisi vähintään tietyntasoinen ymmärrys. Yhdistävänä teknologiana ovat Java-pohjaiset sellaiset.
Esimerkkikombinaatio: JBoss Application Server 6, Seam 3, JSF 1.2, Hibernate 3.3.2
Kätevää taulukkoa, josta voisi ruksata täsmäävät, asiakkaan vaatimukset täyttävät sarakkeet ei välttämättä pystytä muodostamaan – eikä se perimmäinen tarkoitus olisikaan. Sellaisen taulukon muodostamista ei tekisi niinkään hankalaksi se, että ICT-alalla on yleisemminkin havaittavissa sumeutta termien alusta, sovelluskehys ja arkkitehtuuri merkityksien rajauksissa, vaan se että sovelluskehyksien välisiä hienoisia eroja kertyisi niin paljon.
Sinänsä on helppo listata sovelluskehyksiin sisällytettyjä ja niiden tukemia teknologioita kuten EJB 3 tai Java EE 6, mutta hienoisemmat erot on helpompi ymmärtää intuitiivisemmin – sitten kun kouluttautunut sopivasti. Lisäksi tuotteiden eri versioissa voi olla merkittäviä eroja, tuottajatahon koettua, että on aika laskea irti aiemmista huonoista käytännöistä ja laatia tuotteen uusi versio kulloisten parhaiden käytäntöjen mukaiseksi (esim. Struts 2 ja JSF 2.0).
Koska kaikilla työntekijöillä on hivenen erilaisia taustoja koulutuksensa ja työkokemuksensa osalta, eikä eri paikkakunnilla toimivista saman alan oppilaitoksista valmistu yhtäläisen tietotaidon saavuttaneita asiantuntijoita – eikä aina samastakaan oppilaitoksesta – ei voida olettaa, että projektin koulutusvaiheessa annosteltu opetus menisi ymmärrykseen samankaltaisesti. Kuitenkin, koska työntekijät ovat mieltyneet siihen kuinka hyvin heidän yrityksellään on mennyt, johtuen pitkälti heidän keskinäisestä luottamuksestaan, he ovat valmiita hiukan "kärsimäänkin" ja opettelemaan asioita, sekä asioiden ympäriltä, niin paljon, että kaikki työntekijät saavuttavat sillä tapaa samankaltaisen ymmärryksen, että valituista teknologioista keskenään keskusteleminen sujuu luontevasti.
Työntekijät nauttivat normaalia tuntipalkkaa jokaisen opiskelutunnin osalta – myös niiltä tunneilta, joita käyttävät muita enemmän. Olennaista on, että kukin tunnistaa puutteet itsessään, eikä koe kiusalliseksi kertoa niistä muille yrityksen osakkaille. Keskinäisen luottamuksen on oltava jatkuvaa ja aktiivisesti hoidettua.
Sitä missä muodossa oppiminen tapahtuu, miten se järjestetään ja erityisesti mitä opetetaan, on vielä projektin alussa täysin avointa. Kyseeseen voisivat tulla sertifikaatteja tarjoavien järjestelmätoimittajien kurssit ja muut valmiskurssit, mutta vaihtoehtojen joukossa on myös kustomoidun opetuksen hankkiminen. Jälkimmäinen tulee todennäköisesti kalleimmaksi.
Lisäksi on tarkoitus tehdä myös kustannuslaskelmia ohjelmistotuotannon välineistä muodostuvista kombinaatioista. Useimmat tuotteista ovat Apache- ja LGPL-lisenssisiä eli ilmaiseksi käyttöönotettavia, mutta saatavilla on kokonaispaketteja, joihin sisältyy esim. maksullinen tuotetuki. Muodostuvalta paletilta, joka siis tulee vielä muuttumaan esiselvityksen mukaisesta listasta, tullaan karsimaan pois sellaiset, joilla ei ole aktiivista käyttäjäyhteisöä, laadukasta dokumentaatiota, sekä roadmappia, josta näkisi mihin se on tulevaisuudessa kehittymässä.
SUN GLASSFISH PORTFOLIO provides the foundation to develop and deploy Web and enterprise
applications and is a cost-effective way to acquire, manage, and maintain
critical aspects of your Web platform.
http://www.sun.com/software/products/glassfish_portfolio/
JBOSS ENTERPRISE WEB PLATFORM is the ideal solution
for light and rich Java applications. Based on Java standards, JBoss Enterprise
Web Platform enhances the Java EE Web Profile with enterprise features to
provide a flexible platform specifically targeted for lightweight Java
applications.
http://www.jboss.com/products/platforms/webplatform/
http://community.jboss.org
JBOSS ENTERPRISE APPLICATION PLATFORM is the market leading platform for innovative and scalable Java
applications. Integrated, simplified, and delivered by the leader in enterprise
open source software, it includes leading open source technologies for
building, deploying, and hosting enterprise Java applications and services.
http://www.jboss.com/products/platforms/application/
SEAM is a
powerful open source development platform for building rich Internet
applications in Java. Seam integrates technologies such as Asynchronous
JavaScript and XML (AJAX), JavaServer Faces (JSF), Java Persistence (JPA),
Enterprise Java Beans (EJB 3.0) and Business Process Management (BPM) into a
unified full-stack solution, complete with sophisticated tooling.
http://www.seamframework.org
http://docs.jboss.com/seam/latest/reference/en-US/html/Book-Preface.html
APACHE TAPESTRY is an open-source framework for creating dynamic, robust, highly
scalable web applications in Java. Tapestry complements and builds upon the
standard Java Servlet API, and so it works in any servlet container or
application server.
http://tapestry.apache.org
http://www.infoq.com/articles/tapestry5-intro
APACHE STRUTS 2 is an elegant, extensible framework for creating enterprise-ready
Java web applications. The framework is designed to streamline the full
development cycle, from building, to deploying, to maintaining applications
over time.
http://struts.apache.org/2.x/index.html
http://www.vaannila.com/struts-2/struts-2-example/struts-2-annotation-example-1.html
SPRING has a
layered architecture, meaning that you can choose to use just about any part of
it in isolation, yet its architecture is internally consistent. So you get
maximum value from your learning curve. You might choose to use Spring only to
simplify use of JDBC, for example, or you might choose to use Spring to manage
all your business objects. And it's easy to introduce Spring incrementally into
existing projects.
http://www.springsource.org/about
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/
ORACLE ADF is an end-to-end Java EE framework that simplifies development by providing out
of the box infrastructure services and a visual and declarative development
experience.
http://www.oracle.com/technology/products/adf/index.html
http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/adfoverview/adfoverview.htm
http://www.oracle.com/technology/products/adf/pdf/ADF_11_overview.pdf
http://wiki.oracle.com/page/ADF+Technologies
HIBERNATE is
a powerful, high performance object/relational persistence and query service.
Hibernate lets you develop persistent classes following object-oriented idiom -
including association, inheritance, polymorphism, composition, and collections.
Hibernate allows you to express queries in its own portable SQL extension
(HQL), as well as in native SQL, or with an object-oriented Criteria and
Example API.
https://www.hibernate.org
ENTERPRISE JAVABEANS (EJB) technology is the server-side component architecture for Java
Platform, Enterprise Edition (Java EE). EJB technology enables rapid and
simplified development of distributed, transactional, secure and portable
applications based on Java technology.
http://java.sun.com/products/ejb/index.jsp
http://java.sun.com/javaee/5/docs/tutorial/doc/bnbls.html
JAVASERVER FACES architecture clearly defines a separation between application logic
and presentation while making it easy to connect the presentation layer to the
application code. This design enables each member of a web application
development team to focus on his or her piece of the development process, and
it also provides a simple programming model to link the pieces together.
http://java.sun.com/javaee/javaserverfaces/
https://javaserverfaces.dev.java.net/
APACHE AXIS2 is a core engine for web services. Apache Axis2 not only
supports SOAP 1.1 and SOAP 1.2, but also has integrated support for the widely
popular REST-style of web services. The same business logic implementation can
offer both a WS-* style interface and a REST/POX style interface
simultaneously.
http://ws.apache.org/axis2/
JAVA PLATFORM, ENTERPRISE EDITION (JAVA
EE 6) is the industry standard for enterprise Java
computing. Utilize the new, lightweight Java EE 6 Web Profile to create
next-generation web applications, and the full power of the Java EE 6 platform
for enterprise applications. Developers will benefit from productivity
improvements with more annotations, more POJOs, simplified packaging, and less
XML configuration.
http://java.sun.com/javaee/
http://java.sun.com/javaee/technologies/
GOOGLE WEB TOOLKIT is a development toolkit for building and optimizing complex
browser-based applications.
http://code.google.com/webtoolkit/
http://code.google.com/webtoolkit/examples/
VAADIN is a
Java web application framework. It is designed for creating rich and
interactive applications that run in the browser, without any plugins. A
server-driven architecture together with reusable component model is used to
simplify programming of applications and for better web application security.
No HTML, XML or JavaScript necessary and all Java libraries and tools are at
your disposal.
http://vaadin.com
http://vaadin.com/tutorial
APACHE WICKET makes developing web-apps simple and enjoyable again with proper
mark-up/logic separation, a POJO data model, and a refreshing lack of XML. Swap
the boilerplate, complex debugging and brittle code for powerful, reusable
components written with plain Java and HTML.
http://wicket.apache.org
http://wicket.apache.org/examplehelloworld.html
ORACLE WEBLOGIC SERVER STANDARD EDITION is the world's best application server for building and running
enterprise applications and services. It fully implements the latest Java EE
standards and offers choice in development frameworks and tooling.
Comprehensive and accessible management capabilities enable administration of
sophisticated systems via a well-designed graphical console and/or automation.
http://www.oracle.com/appserver/weblogic/standard-edition.html
http://www.oracle.com/appserver/appserver_family.html
SUN GLASSFISH ENTERPRISE SERVER V3 is the industry's first application server to support the Java
Platform, Enterprise Edition 6 (the Java EE 6 platform) standard. Its greatly
improved flexibility and ease of use reduces cost by providing improved
developer productivity, simplified application architecture, and low-cost
annual subscriptions.
http://www.sun.com/software/products/glassfishv3/
http://www.sun.com/software/products/glassfishv3/features.jsp
JETTY provides an HTTP server, HTTP client, and javax.servlet container. These
components are open source and available for commercial use and distribution. Jetty
is used in a wide variety of projects and products. Jetty can be embedded in
devices, tools, frameworks, application servers, and clusters.
http://jetty.codehaus.org/jetty/
http://www.eclipse.org/jetty/about.php
APACHE TOMCAT is an open source software implementation of the Java Servlet and
JavaServer Pages technologies.
http://tomcat.apache.org
http://tomcat.apache.org/tomcat-6.0-doc/introduction.html
JBoss Enterprise Web Server combines market leading open source technologies with enterprise
capabilities to provide a single solution for large scale websites and
lightweight web applications. By integrating Apache Tomcat, Apache Web Server
and all of the common connectors used in between under a single subscription,
JBoss Enterprise Web Server provides IT with a simple and complete solution for
lightweight Java applications.
http://www.jboss.com/products/platforms/webserver/
JBOSS DEVELOPER STUDIO PORTFOLIO EDITION provides a certified open source development environment.
http://www.jboss.com/products/devstudio/
http://www.jboss.com/products/devstudio/features/
NETBEANS is
a free, open-source Integrated Development Environment for software developers.
You get all the tools you need to create professional desktop, enterprise, web,
and mobile applications with the Java language.
http://netbeans.org
http://netbeans.org/features/web/index.html
ORACLE JDEVELOPER is a complete IDE for Service-Oriented Architecture (SOA), Java and
Rich Enterprise Application (REA) development that is ranked best among major
Java vendors in Forrester TechRankings. As part of Oracle Fusion Middleware
11g, JDeveloper 11g is "hot-pluggable" with Oracle and non-Oracle
environments, supporting all major J2EE application servers and databases.
http://www.oracle.com/tools/jdev_home.html
INTELLIJ IDEA is a code-centric IDE focused on developer productivity. IntelliJ
IDEA deeply understands your code and gives you a set of powerful tools without
imposing any particular workflow or project structure. IntelliJ IDEA is your
dream pair-programmer who knows its way around the codebase, makes great
suggestions right when you need them, and is always ready to help you shape
your code.
http://www.jetbrains.com/idea/
http://www.jetbrains.com/idea/features/index.html
ECLIPSE is
an open source community whose projects are focused on building an extensible
development platform, runtimes and application frameworks for building,
deploying and managing software across the entire software lifecycle.
http://eclipse.org
http://www.eclipseplugincentral.com
http://www.eclipse.org/projects/listofprojects.php
http://eclipse.org/downloads/
MYECLIPSE is
the most affordable and comprehensive J2EE IDE and Web development tool suite
for the Eclipse open-source platform. MyEclipse is the Eclipse plugin-based
solution for all your UML, AJAX, Web, Web Services, J2EE, JSP, XML, Struts, JSF, Java Persistence, EJB, extended database support and application
server integration needs.
http://www.myeclipseide.com
http://www.myeclipseide.com/module-htmlpages-display-pid-1.html
ORACLE ENTERPRISE PACK FOR ECLIPSE is a free set of certified plug-ins, enabling WebLogic developers
to support Java EE and Web Service standards where Eclipse is the preferred
Integrated Development Environment (IDE) within an organization. As part of
Oracle Fusion Middleware, the Oracle Enterprise Pack for Eclipse supports
development with technologies including Database, Java SE, Java EE, Web
Services, XML, and the Spring Framework.
http://www.oracle.com/tools/enterprise-eclipse-pack.html
SMART DEVELOPMENT ENVIRONMENT integrates Unified Modeling Language (UML), database design and
business process modeling toolset to your favorite IDE. SDE integrates with
Eclipse, Visual Studio.NET, NetBeans and IntelliJ IDEA. SDE extends Integrated
Development Environment (IDE) to cover full software development lifecycle from
requirements capturing, system analysis, database design, code generation and
documentation generation.
http://www.visual-paradigm.com/product/sde/
http://www.visual-paradigm.com/product/sde/ec/provides/codedbeng.jsp