Avointen ohjelmistojen käyttö ohjelmistokehityksessä 9.4.2008 Janne Kuha Manager, Java Services Descom Oy Janne Kuha Manager, Java Services janne.kuha@descom.fi Kuka? Descom Oy:llä, sitä ennen Wanadu Inc., Mountain View, CA, US 1
Descom? Liiketoiminta aluuet Lotus Notes/Domino Java/Java EE Portlet/Portal development Support Services Toimittanut yli 250 sovellusta, joilla yli 600 000 käyttäjää kuudella mantereella. Perustettu 1997 2006 liikevaihto n. 5.5M Noin 50 työntekijää IBM Premier Business Partner Viimeaikoina Vuoden 2006 IBM ohjelmistokumppani Jyväskylän vuoden yrittäjä 2007 Avointen ohjelmistojen käyttö ohjelmistokehityksessä 9.4.2008 Janne Kuha Manager, Java Services Descom Oy 2
Sisältö Tarkoituksena käydä läpi avointen ohjelmistojen käyttöä sovelluskehityksessä JAVA EE ympäristössä Open Source Software Yleistä Haasteet Käyttökohteet Suunnittelu ja projektinhallinta Kehittäminen työvälineet Kehittäminen lähdekoodi Testaaminen Tuotantoonvienti ja paketointi Tuotantoympäristö Lisenssit Kirja Open Source Software Open source software is computer software for which the humanreadable source code is made available under a copyright license (or arrangement such as the public domain) that meets the Open Source Definition. This permits users to use, change, and improve the software, and to redistribute it in modified or unmodified form. It is often developed in a public, collaborative manner. Open source software is the most prominent example of open source development and often compared to user generated content. Lähde: http://en.wikipedia.org/wiki/open_source_software 3
Yleistä Java ympäristössä on jo pitkään ollut saatavilla paljon avoimeen lähdekoodiin perustuvia työkaluja, sovelluskehyksiä, palvelimia, tms. Java ympäristössä on todella elinvoimainen opensource kulttuuri. Java sovelluskehitystyössä usein avoimen lähdekoodin sovelluskehyksien tai työkalujen käyttäminen tuo kilpailuetua yritykselle. Kaikkea ei tarvitse rakentaa itse, vaan voi käyttää apuna avoimen lähdekoodin ratkaisuja. Mahdollisesti myös voi antaa takaisin avoimen lähdekoodin yhteisölle koodin tai muun avun myötä. Käyttökohteet Ohjelmistokehityksen perusteemat suunnittelu ja projektinhallinta kehittäminen työvälineet kehittäminen lähdekoodi testaaminen tuotantoonvienti ja paketointi tuotantoympäristö Jokaiseen näistä osa alueista on saatavilla sekä kaupallisia että avoimeen lähdekoodiin perustuvia ratkaisuja. Tuotantoonvienti Tuotantoympäristö Testaaminen Suunnittelu Kehittäminen 4
Haasteita Avoimen lähdekoodin ohjelmistoissa ei välttämättä laatutakeita. Tuki, jos sitä tarvitaan, voi olla haasteellista varmistaa. Tosin yleensä avoimen lähdekoodin projekteissa on kanava palautetta varten ja avun pyytämistä varten. Yleensä kuitenkin korjaukset ja uudet julkaisut tulevat nopeammin kuin suljetun lähdekoodin tuotteissa. Lisenssien i kanssa täytyy t olla tarkkana. Suunnittelu Yleensä riippuen kehitystiimin tarpeista liittyen prosesseihin esimerkiksi tuki Scrum prosessille. sovellussuunnitteluun esimerkiksi sovelluksien ruutujen suunnittelu. dokumentointiin esimerkiksi Open Office projektinhallintaan esimerkiksi trac 5
Kehittäminen työvälineet Suosituimmat kehitysympäristöt Eclipse (takana IBM) NetBeans (takana Sun) Sekalaisia pienempiä editoreita (JEdit, tms.) Lähdekoodivarastot Subversion (SVN) Concurrent Versions System (CVS) Molemmilla työkaluilla vahva tuki ja käyttäjäkunta Esimerkiksi IBM:n Rational työkalut käyttävät Eclipseä pohjalla. Kehittäminen lähdekoodi Java ympäristössä saatavilla todella paljon sovelluskehyksiä Mielenkiintoisimpia kehyksiä olio relaatio hallinta Hibernate, Ibatis, Apache OpenJPA sovellusrakenne Spring Framework web sovellukset Seam, Wicket, Spring Web MVC apukirjastot lokiinkirjoitus hallinnointi välimuistin käyttö graafit profilointi tms. 6
Testaaminen Yksikkö ja integraatiotestaus JUnit TestNG Koodianalysointi PMD FindBugs Koodikattavuus Cobertura Grobo Tuotantoonvienti ja paketointi Sovelluksen rakentaminen Ant Maven Sovelluksien automaattinen integraatiotestaus Continuum Cruise Control 7
Sovellusten tuotantoympäristö Sovelluspalvelimet web palvelimet Apache, tms. Java EE web palvelimet Tomcat, Jetty, Resin, tms. Java EE palvelimet JBoss, Geronimo, Glassfish, tms. Tietokannat Postgres, MySql, tms. Derby, HSQLDB, tms. Integraatiot JBossMQ, JOTM, tms. Lisenssit huomautuksia Yleisimmät lisenssointimallit Apache Software License 2.0 BSD License GNU General Public License (GPL) GNU Lesser General Public License (LGPL) Yleiset muut lisenssointimallit ISC license MIT License Mozilla Public License (MPL) 1.1 Common Development and Distribution License Common Public License 1.0 Eclipse Public License 8
Kirja tulossa ;) Tehokas Java EE sovellustuotanto sovelluskehykset, kehitysmallit ja agileperiaatteet. Teos on suunnattu sovelluskehittäjille, jotka hallitsevat Java kielen perusteet ja joilla on halu siirtyä seuraavalle tasolle. Teos pohjautuu ketteriin (Agile) periaatteisiin ja sovelluskehyksiin, joiden avulla Java EE sovelluksia voidaan rakentaa ammattimaisemmin. Tietokantojen tehokas käsittely (mm. Hibernate ja Java Persistence API) Sovelluslogiikan rakentaminen (mm. Spring Framework Web palveluiden rakentaminen (mm. Wicket) Testaus (JUnit) Tärkeät kehitystyökalut (Maven, Eclipse ja Subversion) Docendo / WsoyPRO 9