390 likes | 601 Views
Java Enterprise Ed. vs Spring Framework. SDM-1 Agnieszka Brejnak. Plan prezentacji. Cel pracy magisterskiej Java EE Spring Framework Bezpieczeństwo Eclipse IDE i Plugin-Development Environment. Cel pracy magisterskiej.
E N D
Java Enterprise Ed. vs Spring Framework SDM-1 Agnieszka Brejnak
Plan prezentacji • Cel pracy magisterskiej • Java EE • Spring Framework • Bezpieczeństwo • Eclipse IDE i Plugin-Development Environment
Cel pracy magisterskiej • Przedstawienie mechanizmów bezpieczeństwa w Java EE 5 oraz Spring Security 2.0 • Identyfikacja problemów w obydwu rozwiązaniach • Stworzenie wtyczki do Eclipse IDE dla Spring Security
Java EE: FAQ • Co to jest Java Enterprise Edition? • Czym się różni Java EE od Java SE? • Czy Java EE to to samo co J2EE? • Czym się różni Enterprise Java Bean od Java Bean? • Czy aplikacje Java EE muszą być uruchamiane na serwerach aplikacji? • W jakim środowisku pisać aplikacje JEE?
Java EE Java PlatformEnterprise Edition is a set ofcoordinated technologies that significantly reduces the cost and complexity of developing, deploying, and managing multitier, server-centric applications. Building on the Java SE, Java EE adds the capabilities that provide a complete, stable, secure, and fast Java platform for the enterprise. http://java.sun.com/javaee/
JEE to tylko specyfikacja. Komercyjne BEA WebLogic Sun Java System Application Server IBM WebSphere Oracle Application Server SAP NetWeaver Otwarte JBoss Glassfish Apache Geronimo Specyfikacja ma juz prawie 2 lata a jeszcze nie wszystkim udało się uzyskać certyfikat Java EE: Serwery aplikacji
Java EE: Architektura aplikacji • Programy i applety klienckie uruchomione na maszynie klienta • Komponenty webowe uruchomione na serwerze w kontenerze webowym • Komponenty biznesowe uruchomione na serwerze w kontenerze EJB
Java EE: EJB EJB jest dla Java EE tym czym jest Myszka Mickey dla Walta Disney’a • Komponenty realizujące logikę biznesową • Zarządzane przez kontener EJB • Można je konfigurować adnotacjami • Dodatkowe usługi (transakcje, bezpieczeństwo) zapewniane przez kontener • Klienci EJB: aplikacje biurkowe, przeglądarki, usługi sieciowe • EJB są „rejestrowane” w kontenerze i udostępniane innym
Java EE: Zastosowania EJB • 3 rodzaje klientów • aplikacje • usługi sieciowe • przeglądarki • Do EJB można się dostać: • bezpośrednio • przez JSP/Servlety • EJB może się komunikować z: • innymi EJB • bazami danych i innymi systemami spadkowymi • usługami sieciowymi
Java Server Faces • JSF to frameworkwspomagającytworzenie interfejsuużytkownika aplikacji JEE uruchamianych po stronie serwera. • Zgodny z architekturą MVC rozdzielającą interfejs, dane i logikę biznesową. • Dodatkowo zapewnia mechanizmy: • zarządzania bean'ami. • zarządzania nawigacją w aplikacji. • przechwytywania wyjątków i błędów, • internacjonalizacji aplikacji
Java EE: Zmiany, zmiany... Gdzie Java EE zaspała? • Utrwalanie danych: Hibernate • Framework dla aplikacji Web: Struts • Wstrzeliwanie zależności: Spring IoC • Adnotacje: XDoclet • Wsparcie dla testów – nadal brak
Java EE: Problemy • Zbyt rozbudowana specyfikacja (nie wszystkie serwery aplikacyjne są certyfikowane) • Problemy z testowaniem jednostkowym • Konieczność uruchamiania EJB w kontenerze • Zbyt powolna reakcje na potrzeby programistów • Złe nastawienie do EJB po poprzednich wersjach Czy JEE 6 rozwiąże te problemy?
Nadeszła wiosna 2004... Marzec 2004
Spring Framework • Autorzy: Rod Johnson, Jurgen Hoeller (Spring Source) • Początki w książce (2002) • Historia • Spring 1.0 - Marzec 2004 • Spring 2.0 – Wrzesień 2006 • Spring 2.5 – Listopad 2007
Spring Framework : FAQ • Co to jest Spring Framework? • Czy w Springu pisze się programy w Javie? • Czym Spring Framework różni się od Java EE? • Czy to jeden z wielu webowych frameworków? • Kto używa Spring Framework?
Spring Framework Spring is a lightweightinversion of control and aspect-orientedcontainerframework. Spring nie jest implementacją JEE Spring nie jest serwerem aplikacyjnym
Spring Framework • Cel: ułatwienie pisania aplikacji J2EE (aktualnie JEE) • Framework wspomagający tworzenie aplikacji na każdym poziomie • Integracja i ułatwienie korzystania z istniejących technologii (w tym z JEE) • Struts, JSF, WebWork • Hibernate, TopLink, JPA • JDBC, JTA
Architektura Spring Framework • Architektura modułowa • Moduły niezależne od siebie • Stopniowe wprowadzanie w projekt • Dostosowanie do potrzeb
Spring Portfolio • Spring Web Flow • Spring Web Services • Spring Security • Spring Batch • Spring IDE • Spring Integration • Spring .NET (!) • ...
Spring Framework: cechy • Wstrzeliwanie zależności (IoC, DI) • Programowanie aspektowe (AOP) • Ułatwienie programowania • Wsparcie dla procesu testowania • Nieinwazyjność • Dostarczanie usług (transakcje, bezpieczeństwo) bez użycia kontenera
Spring Framework IoC • Kontener Inversion of Control = Dependency Injection • Identyfikuje i udostepnia obiekty aplikacji • Zarządza cyklem życia obiektu • Konfiguruje obiekty, w tym: • wszczepia zależności • „dekoruje” obiekty transakcyjnością, mechanizmami bezpieczeństwa • Obiekt nie musi tworzyć ani szukać swoich składowych
List commissions = new ArrayList(); Statement stmt = null; ResultSet rs = null; try { stmt = this.myConnection.createStatement(); rs = stmt.executeQuery("SELECT comm FROM emp"); while (rs.next()) { Integer commission = new Integer(rs.getInt("COMM")); if (rs.wasNull()) commission = null; commissions.add(commission); } } catch (SQLException sqlEx){ logger.severe(sqlEx.getMessage()); logger.severe(sqlEx.getErrorCode()); logger.severe(sqlEx.getSQLState()); } finally { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); } catch (SQLException sqlEx) { logger.severe(sqlEx.getMessage()); } } JDBC... List comms = new ArrayList(); JdbcTemplate jt = new JdbcTemplate(datasource); List res = jt.queryForList("SELECT comm FROM emp"); Iterator it = res.iterator(); while (it.hasNext()) { Number comm = ((Map)it.next()).get("COMM"); if (comm != null) comms.add(new Integer(comm.intValue()) ); }
Java EE vs Spring Java EE Spring ciężki kontener EJB lekka JVM usługi zapewniane usługi zapewniane przez kontener przez framework
To nie tylko rywalizacja SpringSource członkiem grupy eksperckiej dla Java EE 6 Wsparcie dla Spring Framework w Netbeans IDE Spring integruje się z EJB Spring może opakować POJO i udostępniać je jako EJB Sun i SpringSource
Bezpieczeństwo Wiele poziomów bezpieczeństwa: • zabezpieczenia komputera klienckiego • aplikacje • bazy danych • sieci komputerowe • systemy operacyjne • fizyczny dostęp do urządzeń • uświadamianie ludzi (korporacje)
Bezpieczeństwo aplikacyjne • Uwierzytelnianie • Autoryzacja • Niezaprzeczalność • Logowanie aktywności • Szyfrowanie i integralność • Wykrywanie aktywności człowieka
Bezpieczeństwo: JEE i Spring • JEE i Spring Security (dawniej Acegi) • Podobieństwa: • Konfiguracja poprzez: adnotacje, XML i programowa • Wsparcie dla uwierzytelniania, autoryzacji, wymuszenie szyfrowania, rozpoznawania aktywności człowieka • Wykorzystanie AOP
Bezpieczeństwo: JEE i Spring Różnice: • Spring Security: konfiguracja zamknięta w WAR • Spring Security: zabezpieczenie dowolnej klasy, metody, instancji obiektu • Spring Security: bogatsze API • Spring Security: hierarchiczne role
Eclipse • Popularne IDE • Open-source, wspierany przez IBM • Ponad 1000 wtyczek • Główni konkurenci: • NetBeans, Sun • IntelliJ IDEA, Jet Brains
Dziękuję za uwagę. Pytania?