Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Tomasz Wysocki, AMG.net Senior IT Consultant.

1 Komercyjne systemy informatyczne oparte na platformie J...
Author: Kazimiera Marciniak
0 downloads 0 Views

1 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Tomasz Wysocki, AMG.net Senior IT Consultant

2 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Agenda  O AMG.net  Aplikacje komercyjne AMG.net a Open Source  Java i Open Source  Standaryzacja projektów Open Source  Innowacje w Open Source  Agile Development  Dlaczego Open Source ?

3 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source AMG.net – odrobina historii W ciągu 10 lat AMG.net rozwinęła się z małej agencji interaktywnej do postaci wiodącej firmy technologiczno-doradczej w Polsce, posiadającej unikalne kompetencje oraz grupę klientów, wśród których znajdują się najbardziej renomowane spółki telekomunikacyjne i finansowe. 1996 2000 2004 199719981999200120022003 2005 Powstanie AMG.net AMG.net dzisiaj: Zespół 140+ osób 33 klientów Część grupy Bull AMG.net opracowuje własny system content management - DynaXML Powstaje serwis internetowy mBanku Tworzymy projekt MAP (Idea) AMG.net rozpoczyna współpracę z wiodącymi markami w Polsce ( TP, Grupa Żywiec, Dell, P&G ) 5 10 15 20 Realizujemy portal TP Przychody w milionach PLN 2006

4 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Platformy technologiczne AMG.net

5 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source AMG.net – wybrane projekty PTK Centertel Multi Access Portal Orange World Portal umożliwiający wielokanałowy dostęp do informacji. Wspiera szeroki wachlarz działań marketingowych, sprzedaży usług i produktów oraz obsługę klienta. Obsługuje WAP 2.0 i przesyłanie strumieni wideo Zastosowane platformy: ATG Dynamo Portal Suite DynaXML Content Management BEA WebLogic Application Server Volantis Mariner

6 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source PZU PZU24 – Intranet Portal AMG.net – wybrane projekty Wymiana wiedzy i informacji pomiędzy pracownikami PZU. Personalizacja prezentowanych treści, zaawansowane funkcje wyszukujące umożliwiają szybkie i efektywne dotarcie do poszukiwanych informacji. Integracja z ActiveDirectory. Zastosowane platformy: DynaXML 3.0 Portal JBoss AS

7 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Bogata funkcjonalność samoobsługowa dla klientów korporacyjnych, związana z zarządzaniem prywatnymi sieciami komórkowymi. Skomplikowana logika przetwarzania danych. Ponad 300 różnych operacji użytkownika. Pełne wersjonowanie wszystkich danych. Koordynacja realizacji operacji na wielu systemach przez zaawansowany monitor transakcji biznesowych Integracja z 11 systemami operatora (Billing, VPN, VPABX, SMSC, LP...) Zastosowane platformy: BEA WebLogic Application Server Springframework Hibernate AMG.net - wybrane projekty PTC/ERA Aplikacja samoobsługowa dla klientów biznesowych

8 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Problemy w budowie aplikacji – przyczyny Podstawy  Złożoność  Sztywność  Ścisłe powiązania  Niska jakość Podstawy  Złożoność  Sztywność  Ścisłe powiązania  Niska jakość  Konsekwencje  Kosztowny rozwój kodu  Kosztowne zmiany w kodzie  Kosztowne utrzymanie kodu  Trudności w ponownym wykorzystaniu kodu  Problemy z dotrzymaniem terminów Konsekwencje  Kosztowny rozwój kodu  Kosztowne zmiany w kodzie  Kosztowne utrzymanie kodu  Trudności w ponownym wykorzystaniu kodu  Problemy z dotrzymaniem terminów  W aplikacjach biznesowych problemem nie jest koszt licencji oprogramowania.

9 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Problemy w budowie aplikacji – efekty praktyczne Podstawy  Prostota  Elastyczność  Luźne powiązania  Wysoka jakość Podstawy  Prostota  Elastyczność  Luźne powiązania  Wysoka jakość Korzyści  Tańszy rozwój kodu  Tańsze zmiany w kodzie  Tańsze utrzymanie kodu  Ponowne wykorzystanie kodu  Dotrzymane terminy  Większa efektywność pracy zespołu Korzyści  Tańszy rozwój kodu  Tańsze zmiany w kodzie  Tańsze utrzymanie kodu  Ponowne wykorzystanie kodu  Dotrzymane terminy  Większa efektywność pracy zespołu c c W aplikacjach biznesowych problemem nie jest koszt licencji oprogramowania.

10 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Główne nurty zmian Podstawy  Prostota  Elastyczność  Luźne powiązania  Wysoka jakość Podstawy  Prostota  Elastyczność  Luźne powiązania  Wysoka jakość standaryzacja innowacje agile development

11 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source  JSR – Java Specification Request otwarty proces, wielu uczestników, publiczne wyniki ponad 285 specyfikacji Sun, Oracle, Apple, BEA, Google, HP, Borland, Apache, Intel, IBM.....  JEE (Java EE) – Java Enterprise Edition zbiór najważniejszych JSR podstawa do implementacji serwerów aplikacji  Open Source Jakarta – http://jakarta.apache.orghttp://jakarta.apache.org JBoss – http://www.jboss.orghttp://www.jboss.org Hibernate – http://hibernate.orghttp://hibernate.org Springframework – http://springframework.orghttp://springframework.org... i tysiące innych Standaryzacja na platformie Java

12 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source jakarta.apache.org Open Source - jakarta.apache.org - standard de facto  ant / maven - budowanie aplikacji  xerces / xalan - obsługa xml / xslt  biblioteki commons-* commons-lang - wspomaga programowanie obiektowe commons-collection - wspomaga używanie kolekcji Java commons-attributes - obsługa anotacji w kodzie (metadane) commons-dbcp - wspomaga obsługę połączeń JDBC commons-digester - wspomaga obsługę konfiguracji XML commons-logging - wspomaga obsługę logowania zdarzeń  log4j - biblioteka logowania zdarzeń  struts - MVC dla aplikacji webowych  poi - obsługa formatów MSOffice  bsf - obsługa dynamicznych skryptów

13 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source  Przeźroczysta persystencja  Open Source  Prostota konfiguracji i użytkowania  Efektywne narzędzie  Wysoka wydajność  Własny język zapytań HQL  Niezależność od motoru bazy danych  Wsparcie dla transakcji i systemów cache  Podstawa specyfikacji EJB 3.0 Hibernate Application Application Logic JDBC Driver Database Network Protocol JDBC API HIBERNATE

14 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source  Obsługa bazy danych zrealizowana w całości przez Hibernate 2.1  Oszczędność nakładów pracy liczona w miesiącach roboczych w porówaniu z czystym JDBC System w liczbach:  Liczba tabel w bazie: ~130  Domena: ~ 45 encji  Liczba transakcji: 5000 na dobę  Liczba plików Java: > 3.500  Liczba linii kodu: ~450 tysięcy Hibernate case study – korzyści Application Application Logic JDBC Driver Database Network Protocol JDBC API HIBERNATE

15 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Hibernate - standaryzacja JSR - 220 * javax.persistence.EntityManager * javax.persistence.EntityManagerFactory * javax.persistence.EntityTransaction * javax.persistence.Query * javax.persistence.EntityManager * javax.persistence.EntityManagerFactory * javax.persistence.EntityTransaction * javax.persistence.Query EJB 3.x API * org.hibernate.Session * org.hibernate.SessionFactory * org.hibernate.Transaction * org.hibernate.Query * org.hibernate.Session * org.hibernate.SessionFactory * org.hibernate.Transaction * org.hibernate.Query Hibernate jest strzałem w dziesiątkę. Obecnie trwa proces standaryzacji tego rozwiązania.

16 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Główne nurty zmian Podstawy  Prostota  Elastyczność  Luźne powiązania  Wysoka jakość Podstawy  Prostota  Elastyczność  Luźne powiązania  Wysoka jakość innowacje standaryzacja

17 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source OBJECTS B B A A C C CONFIG DESTROY CONFIG CREATE CONFIGURE CONTAIN ER Kontener komponentów Kontener komponentów zarządza komponentami aplikacji.

18 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Kontenery lekkie vs. ciężkie Ciężkie Komponent musi spełniać określony interfejs Komponent nie może działać bez kontenera Kontener jest duży i najczęściej wbudowany w serwer aplikacji Trudności z przetestowaniem komponentów Ciężkie Komponent musi spełniać określony interfejs Komponent nie może działać bez kontenera Kontener jest duży i najczęściej wbudowany w serwer aplikacji Trudności z przetestowaniem komponentów  Lekkie Komponenty nie muszą spełniać żadnego określonego interfejsu Komponenty mogą działać bez kontenera Kontener jest mały, szybki i nie wymaga serwera aplikacji Komponenty można łatwo przetestować Lekkie Komponenty nie muszą spełniać żadnego określonego interfejsu Komponenty mogą działać bez kontenera Kontener jest mały, szybki i nie wymaga serwera aplikacji Komponenty można łatwo przetestować

19 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Lekki kontener Spring - zalety  Komponenty mogą być zwykłymi Java Bean'ami (POJO)  Wspomaga budowanie aplikacji zgodnie z dobrymi praktykami projektowymi  Zarządzanie cyklem życia komponentów  Funkcjonalność DIP / IoC  Programowanie AOP  Obsługa O/RM (Hibernate, JDO, TopLink, OJB)  Integracja z JMX  Obsługa Remoting (WS / RMI)  MVC dla Web BEANS DESTROY CREATE CONFIGU RE Kontener Spring jest jednym obecnie najlepszym i najbardziej rozbudowanym lekkim kontenerem. Jego funkcjonalność została rozbudowana do postaci pełnej ramy aplikacyjnej.

20 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source A A A setB(B b); setC(C c); A setB(B b); setC(C c); Funkcjonalność DIP/IoC  Eliminacja kodu do wyszukiwania innych komponentów  Niezależność komponentu od kontenera  Lepiej zaprojektowany system. B B C C DIP/IoC Container DIP/IoC Container setB(b)setB(b) setC(c)setC(c) getBean(„B”)getBean(„B”)getBean(„B”)getBean(„B”) getBean(„C”)getBean(„C”)getBean(„C”)getBean(„C”) DIP (Dependency Inversion Principle) / IoC (Inversion of Control) jest kluczowym mechanizmem kontenera Spring zwiększającym jego funkcjonalność i użyteczność.

21 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source  Liczba komponentów: 900+  Liczba osobnych kontenerów: 3  Wszystkie elementy aplikacji w spójnej infrastrukturze  Spójna konfiguracja w plikach XML  Prostota rozwiązania i łatwość rozbudowy  Integracja z Hibernate  Wykorzystane mechanizmy AOP  Aplikacja jest niezależna od serwera aplikacji  Łatwość automatycznego testowania aplikacji  Oszczędności nakładów pracy szacowane w miesiącach pracy w porówaniu z EJB Springframework – case study - kontener komponentów FRONT CORE TX ENGINE SERVICE AUX AOP CONTROLLERS GUI INTEGRATION DAO HB DS MONITORING TRANSACTIONS SECURITY

22 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source innowacje standaryzacja Główne nurty zmian Podstawy  Prostota  Elastyczność  Luźne powiązania  Wysoka jakość Podstawy  Prostota  Elastyczność  Luźne powiązania  Wysoka jakość agile development

23 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Główne założenia eXtreme Programming  Projekt  Prostota  Przeglądy kodu  Testowanie  Testy integracyjne  Krótkie iteracje  Refactoring  KISS  Programowanie w parach  TDD  Ciągła integracja  Zabawa w planowanie eXtreme Programmin g eXtreme Programmin g eXtreme Programming to ekstremalne wzmocnienie dobrych praktyk programistycznych.

24 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source  Liczba scenariuszy : 1000+  Pełen przebieg testów: ~90 min  Scenariusze biznesowe i jednostkowe są kodowane jako testy JUnit  Programista uruchamia testy w Eclipse  Testy JUnit są uruchamiane w nocy i powstają automatyczne raporty ( Maven )  Eclipse dostarcza możliwości Refactoringu  Kod i konfiguracja jest wersjonowany w repozytorium SubVersion Metodologia budowania aplikacji Narzędzia Open Source bardzo efektywnie wspomagają proces budowania aplikacji

25 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Open Source a Java Open Source  Zgodność ze standardami  Ogromna liczba bibliotek  Tańsze utrzymanie kodu  Dostęp do kodu źródłowego  Innowacyjne rozwiązania  Wysoka jakość Open Source  Zgodność ze standardami  Ogromna liczba bibliotek  Tańsze utrzymanie kodu  Dostęp do kodu źródłowego  Innowacyjne rozwiązania  Wysoka jakość

26 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Open Source a Java - Serwery aplikacji  JBoss  Tomcat  Geronimo  JOnAS  Jetty  Glassfish  Caucho Resin  BEA WebLogic  IBM WebSphere  SUN AppServ  Oracle OC4J  ATG Open Source Komercyjn e

27 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Open Source a Java - Narzędzia  Eclipse, NetBeans, jEdit  JUnit, JWebUnit, JMock, EasyMock, Canoo, Cactus, JMeter  Ant, Maven, DamageControl  XDoclet, QDox, AndroMDA, ArgoUML  Checkstyle, PMD, Jalopy, JDepend

28 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Open Source a Java - Biblioteki i Frameworki  Springframework, PicoContainer, Avalon, HiveMind, OpenEJB, Plexus, Jencks, Mule, XWork, ServiceMix  Struts, Velocity, Tapestry, WebWork, Cocoon, JetSpeed, MyFaces, RIFE, LifeRay, Exo, Pluto  Axis, XFire  AspectWerkz, Nanning, JBossAOP  Hibernate, OJB, Castor, Cayenne, iBatis, C-JDBC, Speedo  Xerces, Xalan, Saxon, dom4j, jdom, XMLBeans, XStream, JiBX, Castor, StAX  jakarta.apache.org

29 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Sesja Q&A

30 Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Oferta dla studentów – centrum praktyk AMG.start  Centrum Praktyk AMG.start – 3 miesięczny program praktyk o profilu programistycznym (Java) obejmujący cykl warsztatów i oparty na udziale w projektach  Szansa dla studentów na: poznanie profesjonalnych narzędzi i technik programowania zapoznanie się z obsługą platform JBoss, BEA Weblogic i ATG Dynamo zdobycie doświadczenia w budowaniu złożonych aplikacji w oparciu o platformę J2EE z użyciem najnowszych i najbardziej zaawansowanych technologii wzięcie udziału w unikalnych projektach informatycznych dla największych firm w Polsce  Oferta pracy w AMG.net dla najzdolniejszych!