Java Enterprise Ed. vs Spring Framework

Slides:



Advertisements
Podobne prezentacje
Longhorn Academy - AD Warszawa, 12 kwietnia 2007
Advertisements

Serwery WWW Michał Kuciapski Uniwersytet Gdański Wyższa Szkoła Bankowa
Jarosław Kurek WZIM SGGW
Architektura SAP R/3 Wybrane zagadnienia.
J2EE vs .NET Próba porównania Krzysztof Sobiesiński Michał Słupski.
Decyzje projektowe w .NET Framework
Tworzenie portali z wykorzystaniem technologii Sun Java Enterprise Systems Joanna Kosińska
ADAM Active Directory w trybie aplikacyjnym
Relacyjne Bazy Danych wykład XIII
Uwierzytelnianie i autoryzacja dostępu do portali
Artur Jonak empolis Polska Sp. z o.o.
Projektowanie Aplikacji Komputerowych
Architektura systemu Gra strategiczna „Strusia Jama”
Serwery aplikacji 2008/2009 KAMiTS WMiI UŁ
Tomasz Smieszkoł - 15 stycznia
Eclipse jako IDE III a.
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Proxy (WWW cache) Sieci Komputerowe
Platforma J2EE korporacyjny standard wytwarzania złożonych systemów informatycznych Autor: Jarosław Lis Warszawa, 2006r.
Enteprise Java Beans Emil Wcisło.
Co to jest SOA Czym SOA nie jest
Wzorce projektowe w J2EE
Paweł Fałat Katedra Informatyki Stosowanej
7. Platformy informatyczne przyszłości (wizja SAP)
Spring podstawy.
1/18 LOGO Profil zespołu. 2/18 O nas Produkcja autorskich rozwiązań informatycznych dla małych i średnich firm w zakresie systemów: Baz danych Aplikacji.
Analiza, projekt i częściowa implementacja systemu obsługi kina
Bezpieczeństwo baz danych
WebSphere Everyplace Micro Environment IBM Workplace Client Technology, Micro Edition Monika Nawrot, Tomasz Jadczyk, Tomasz Sadura KI, EAIiE, AGH.
Wstęp do kontenerów IoC
Przemek Lewicki Piotr Linka Bartek Stasikowski
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Rozwój aplikacji przy wykorzystaniu ASP.NET
IT Asset Management Service
Web Serwisy w praktyce Technologie internetowe ( )
Architektura Systemu MunSOL
Rozwój aplikacji. To zestaw narzędzi do budowania i optymalizacji złożonych aplikacji opartych na przeglądarce. To zestaw narzędzi do budowania i optymalizacji.
Message-Driven Bean.
Architektura Systemu Źródło:
Lokalne serwery www Serwer WWW - ang. Web server jest to oprogramowanie zainstalowane na serwerze podłączonym do sieci Internet. Używające technologii.
Licencjonowanie narzędzi dla programistów
Rozdział 1: Wprowadzenie do systemu Windows 2000 i podstaw sieci
Programowanie obiektowe – zastosowanie języka Java SE
Serwery aplikacji Zope Tomcat. Składniki Zopea: Serwer Management interface Databases.
ZAKŁAD SYSTEMÓW KOMPUTEROWYCH
SOS SYSTEM OBSŁUGI SZKOŁY
Autor: Marcin Polak Promotor: dr inż. Paweł Kasprowski
Bazy danych, sieci i systemy komputerowe
Aplet JavaCard, pełniący funkcję autoryzującą (obowiązkowo) oraz identyfikującą (opcjonalna) Aplet wystawia metody pozwalające zarejestrować swoją obecność,
Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC.
PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar.
Spring Framework, Spring Boot
Seminarium Dyplomowe Jacek Fohs.
Jednym z podstawowych celów tworzenia sieci komputerowych jest współdzielenie zasobów, takich jak pliki lub drukarki. Każdy z takich zasobów musi być udostępniony,
Projekt realizowany w ramach Software Development Studio (SDS) Wizualne środowisko do tworzenia aplikacji webowych.
Technologie programowania systemów internetowych
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Aplikacje mobilne w zastosowaniach medycznych
Hibernate Podstawy.
Rozwiązania biznesowe RIM. Czym jest RIM? kanadyjska firma Research In Motion założona w 1984 roku w Waterloo. producent znanej linii urządzeń BlackBerry.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Połączenia aplikacji Klient/Serwer
Sławomir Staśkiewicz JBossAS i EJB 3.1 Sławomir Staśkiewicz
Maciej Wierzchowski Mariusz Sołtysiak. Założenia  Autentykacja użytkownia  Autentykacja dostawcy  Zapewnienie bezpiecznego połączenia.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
Analiza, projekt i częściowa implementacja systemu wspomagania pracy Referatu Reprografii Promotor: mgr inż. Dariusz OlczykWykonała: Katarzyna Ściwiarska.
Komercyjne systemy informatyczne oparte na platformie Java i rozwiązaniach Open Source Tomasz Wysocki, AMG.net Senior IT Consultant.
ŚRODOWISKO PRACY ZESPOŁU PROGRAMISTYCZNEGO BAZUJĄCE NA ROZWIĄZANIACH OPEN SOURCE Janusz Marchewa Łódź, r.
Kompilator eBook w technologii Java Dyplomant: Maciej Bagrowski Promotor: dr inż. Walery Susłow Politechnika Koszalińska Wydział Elektroniki i Informatyki.
Zapis prezentacji:

Java Enterprise Ed. vs Spring Framework SDM-1 Agnieszka Brejnak Java Enterprise Ed. vs Spring Framework

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 Platform Enterprise Edition is a set of coordinated 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 definiuje standard tworzenia wielowarstwowych aplikacji opartych na komponentach, oraz opisuje wymagania wobec ich środowiska wykonania. JEE wykorzystuje dorobek JSE oraz definiuje dodatkowe usługi. Powoduje to uproszczenie procesu tworzenia i wdrażania bezpiecznych i stabilnych rozwiązań biznesowych.

Java EE: Serwery aplikacji 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: Historia Historia Aktualna wersja (FR: Maj 2006): JEE 5 JPE - 1998 Java 2 EE 1.2 (J2EE 1.2) Java 2 EE 1.3 (J2EE 1.3) Java 2 EE 1.4(J2EE 1.4) – zmiana wersjonowania Java EE 5 (JEE 5) Aktualna wersja (FR: Maj 2006): JEE 5 Trwaja prace nad wersja 6

Java EE i jej składowe EJB (Enterprise JavaBeans) 3.0 Java Servlet 2.5 JSP (JavaServer Pages) 2.1 JSTL (JSP Standard Tag Library) JSF (JavaServer Faces) 1.2 JAXB (Java Architecture for XML Binding) SAAJ (SOAP with Attachments API for Java) JAAS (Java Authentication and Authorization Service) JPA (Java Persistence API) 1.0 JCA (J2EE Connector Architecture) JTA (Java Transaction API) JMS (Java Message Service) StAX (Streaming API for XML) JAF (JavaBeans Activation Framework) JAX-WS (Java API for Web Services) Common Annotations Web Service Metadata JavaMail

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 Komponenty realizujące logikę biznesową 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 framework wspomagający tworzenie interfejsu uż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? 101 Damnations (101 przeklenstw EJB)

Nadeszła wiosna 2004... Marzec 2004

Rod Johnson, Jurgen Hoeller (Spring Source) Początki w książce (2002) 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 Ulatwienie: testowalnosc, prostota, luzne polaczenia, cykl zycia

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 lightweight inversion of control and aspect-oriented container framework. Spring nie jest implementacją JEE Spring nie jest serwerem aplikacyjnym Where Struts, WebWork and others can be considered Web frameworks, Spring addresses all tiers of an application Wyjasnienie: Lightweight—Spring is lightweight in terms of both size and overhead. The entire Spring framework can be distributed in a single JAR file that weighs in at just over 1 MB. And the processing overhead required by Spring is negligible. What's more, Spring is nonintrusive: objects in a Spring-enabled application typically have no dependencies on Spring-specific classes. Inversion of control—Spring promotes loose coupling through a technique known as inversion of control (IoC). When IoC is applied, objects are passively given their dependencies instead of creating or looking for dependent objects for themselves. You can think of IoC as JNDI in reverse—instead of an object looking up dependencies from a container, the container gives the dependencies to the object at instantiation without waiting to be asked. Aspect-oriented—Spring comes with rich support for aspect-oriented programming that enables cohesive development by separating application business logic from system services (such as auditing and transaction management). Application objects do what they're supposed to do—perform business logic—and nothing more. They are not responsible for (or even aware of) other system concerns, such as logging or transactional support. Container—Spring is a container in the sense that it contains and manages the life cycle and configuration of application objects. You can configure how your each of your beans should be created—either create one single instance of your bean or produce a new instance every time one is needed based on a configurable prototype—and how they should be associated with each other. Spring should not, however, be confused with traditionally heavyweight EJB containers, which are often large and cumbersome to work with. Framework—Spring makes it possible to configure and compose complex applications from simpler components. In Spring, application objects are composed declaratively, typically in an XML file. Spring also provides much infrastructure functionality (transaction management, persistence framework integration, etc.), leaving the development of application logic to you.

Cel: ułatwienie pisania aplikacji J2EE (aktualnie JEE) 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 Spring distribution comes as one big jar file and alternatively as a series of smaller jars broken out along the above lines (so you can include only what you need) Spring Core: Most basic part of framework that provides IOC and dependency injection features .The most basic part is BeanFactory which provides a sophisticated implementation of the factory pattern which allows programmer to decouple the configuration and specification of dependencies from actual program logic. Spring Context Package: The package, which provides a way to access objects in a framework-style manner similar to JNDI naming Concept. Spring DAO package: This Package provides a JDBC-abstraction layer that removes the need to write JDBC coding and parsing database-vendor specific error codes. Spring ORM package: This Package provides integration layers for popular object-relational mapping. APIs, like JDO, Hibernate etc. Using the ORM package you can use all those O/R-mappers in combination with all the other features Spring offers, such as the simple declarative transaction management feature. Spring AOP Package: This is a aspect-oriented programming implementation which allows to define method-interceptors and point cuts to decouple code implementing functionality that should logically be separated. Spring's Web package: This package provides basic web-oriented integration features, like multipart file-upload functionality or initialization of the IoC container using servlet listeners and a web-oriented application context. When using Spring together with Struts or any other web framework, this is the package to integrate with. Spring's MVC package: This package provides a Model-View-Controller (MVC) implementation for web-applications. Spring's MVC framework is different from other implementations as it provides a clean separation between model code and web forms, and allows you to use all the other features of the 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 Obiekty, zależności między nimi i dodatkowe wymagania programista specyfikuje w pliku .xml

Wstrzykiwanie zależności

JDBC... 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 { if (rs != null) rs.close(); if (stmt != null) stmt.close(); 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

Java EE vs Spring Java EE 5 Spring 2.5 Wstrzykiwanie zależności Tak (ograniczenia) Tak Adnotacje Kontener EJB Nie Wsparcie dla TDD Brak Bardzo dobre Inne technologie Integracja POJO ~Tak Inwazyjność Architektura modułowa

Java EE vs Spring: Trendy

Sun i SpringSource 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

Wiele poziomów bezpieczeństwa: 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

Spring Security

Open-source, wspierany przez IBM Ponad 1000 wtyczek Główni konkurenci: Eclipse Popularne IDE Open-source, wspierany przez IBM Ponad 1000 wtyczek Główni konkurenci: NetBeans, Sun IntelliJ IDEA, Jet Brains

PDE

Cel...

Dziękuję za uwagę. Pytania?