Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Tomasz Wysocki, AMG.net Senior IT Consultant
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 ?
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 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 ) Realizujemy portal TP Przychody w milionach PLN 2006
Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Platformy technologiczne AMG.net
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
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
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
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.
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.
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
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 – JBoss – Hibernate – Springframework – i tysiące innych Standaryzacja na platformie Java
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
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
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: > Liczba linii kodu: ~450 tysięcy Hibernate case study – korzyści Application Application Logic JDBC Driver Database Network Protocol JDBC API HIBERNATE
Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Hibernate - standaryzacja JSR * 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.
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
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.
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ć
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.
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ść.
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
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
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.
Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Liczba scenariuszy : 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
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ść
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
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
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
Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Sesja Q&A
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!