IT-Basecamp 2013. Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S



Relaterede dokumenter
Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling

Model Drevet Design i Praksis

Automatisk build og deploy med Maven. Geek Night hos VP SECURITIES januar 2011 Mads Pultz <mpz@trifork.com>

Arkitektur for begyndere

ecpr erstatnings CPR Design og arkitektur

Forskellige Java versioner

Singleton pattern i Java

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net)

2. Systemarkitektur... 2

DM531 - Softwarearkitektur Projekt - TaxaTracer, Statisk Kort. Martin Dissing-Hansen Alexander Poopeiko Jens Riise Danielsen

SYSTEMDOKUMENTATION AF POC

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

J2EE for begyndere. Denne artikel introducerer J2EE. Den fortæller lidt om de forskellige teknologier i J2EE og kommer med små simple eksempler.

Aftenskole i programmering sæson Core Data del 2. Sæson 2-13

CV for Christian Plougmann Hag

A Profile for Safety Critical Java

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben

Sporbarhed og Rapportering i Quality Center. Kim Stenbo Nielsen NNIT Application Management Services

Begreber om Godt Software

Überblick. Geschichte Basics Lightweight Container Inversion of Control (IoC) Dependency Injection (DI) Beans Spring Framework Module Referenzen

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

Object-Relational Mapping

Skriftlig opgave. Designtanker i database-nære systemer

Forskellige databaser

Assignment #5 Toolbox Contract

STS Designdokument. STS Designdokument

Indholdsfortegnelse for kapitel 1

Enterprise JavaBeans sammenlignet med idealet for en komponetmodel

Dygtig.NET / C# udvikler med stor erfaring fra både offentlige organisationer og private virksomheder.

Casper Fabricius ActiveRecord. O/RM i Ruby on Rails

Introduction til.net remoting i VB.NET

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Curriculum Vitae PETER VILLADSEN MOBIL: RAVNSBORGVEJ 91 DK-4600 KØGE

Der er forsøgt skrevet en lille notits hver gang der er lavet noget, dog kan der være nogle ting som ikke er blevet kommenteret.

It arkitektur- og sikkerhedskrav Løn og personalesystemsudbud. Region Midtjylland 2010.

Web- og serverprogrammering

Bypassing the. Brian Marick

Web services i brug. Anvendelse uden for biblioteksverdenen

Fjernadgang til BEC s systemer via Portal2

Studieordning del

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

Datatekniker med programmering som speciale

Database "opbygning"

Investorpræsentation. Fundamentet for fortsat vækst er styrket. Jørn Larsen, CEO, Founder

Database for udviklere. Jan Lund Madsen PBS10107

Ugeseddel 4 1. marts - 8. marts

Grundlæggende OOA - OOD

Introduction til.net remoting i C#

Curriculum Vitae Jack Petersen

MSI pakke til distribution af AutoPilot komponenter.

Anvendelse af BPT til manuel test

IBM Software Group. SOA v akciji. Srečko Janjić WebSphere Business Integration technical presales IBM Software Group, CEMA / SEA IBM Corporation

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

CLR Integration. Af Torsten Holtse, pbs Indhold

STS Designdokument. STS Designdokument

Curriculum Vitae. Uddannelse: 2001 Civilingeniør fra Danmaks tekniske universitet, fagprofil: styring og regulering.

1 Domæne Design valg User Klassediagran 5

Computer Networks Specielt om Infrastrukturer og Teknologi

Distribuerte Objekter. Våren 2010 Professor II Eric Jul F

Forord. Versioner. Version Date Description /06/2013 Initial version /07/2013 URI er ændret

Rigtig SQL Programmering

Datatekniker med programmering som speciale

Fra MOX agent til et komplet hændelsesbaseret system. (til at understøtte tværsektorielt samarbejde inden for sundhedsvæsnet)

Web- og serverprogrammering

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

Integrationer imellem AX2012 og Winformatik Økonomisystem vers. 3.0

Specifikationsdokument for servicen PID-CPR

Who s to blame? Jeppe Rørbæk. Jeppe.rorbaek@teknologisk.dk Konsulent og underviser på Teknologisk Institut MCP, MCAD, MCSD, MCT

Fjernadgang til BEC s systemer via Portal2

Software Design (SWD) Spørgsmål 1

Videregående programmering i Java

ADIS, WS og Meta Service

Curriculum Vitae for Hardy Henneberg

Programmering 2. dprog2 E

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade København Ø

.NET 4.5 og C# 5.0. Denne artikel beskriver nogle af de nye features i.net 4.5 og C# 5.0. Den forudsætter et vist kendskab til.net og C#.

APPLIKATIONSARKITEKTUR ERP INFRASTRUKTUR. EG Copyright

Development environments made easy

Common Language Runtime. Multithreading

Abstrakte datatyper C#-version

Software Design (SWD) Spørgsmål 1

Real-time programming safety in Java and Ada

Ribe Amts forslag til EPJ-arkitektur

Eksempel: et ordresystem note 5 Lagdeling s. 1

Klasser og nedarvning

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

Programmering 2. dprog2 E

Curriculum Vitae. Jeg har en god forståelse for information teknologi samt at analysere og løse problemer. Har arbejdet i både teams og selvstændigt.

Studieordning del

Oracle8i R8.1.5 JAVA. Oracle8i R Oracle8i Enterprise Edition Oracle8i R Oracle8i R Oracle8i R8.1.

Hvorfor skal vi bruge objekt orienteret databaser?

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Martin Geisler. Uge 49, 2001

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU semester 11. desember 2007

Status på. standardisering. Knut Bernstein Morten Bruun-Rasmussen

1 Ordliste 2. 2 Indledning Problemstillinger Problemformulering Problemafgrænsning Mål med projektet...

Test af It-komponent

The LEGO Journey: Building an agile test foundation one brick at the time. Casper Gaardland Englund. Stephan Hjelmdal Nielsen The LEGO Group l

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Transkript:

IT-Basecamp 2013 Real World Java EE Patterns Adam Bien 1

Indhold Lidt om mig Baggrund for valg af emnet Bogens opbygning Fra J2EE til JEE 5/6 Overflødiggjorte patterns Fremhæve et par patterns 2

Kenneth Sjøholm 40 år Uddannet folkeskolelærer i 1999 Arbejdede som lærer fra 1999-2005 Cand.it i 2008 fra ITU (softwareudvikling) Arbejdede i BEC fra 2008 2011 Startede i Lund&Bendsen i 2011 3

Emnevalg Har undervist i Core Java + Java EE (EJB + JPA) Finder design patterns vigtige og ønsker at blive meget klogere på dem samt kende deres eksistens Syntes bogen umiddelbart virkede interessant 4

Bogens opbygning 6 kapitler 1. A brief History of J2EE 2. Understanding Java EE Core Concepts 3. Rethinking the Business Tier 4. Rethinking the Integration Tier 5. Infrastructural patterns and utilities 6. Pragmatic Java EE Architectures 5

Bogens opbygning Kapitler om patterns følger dette pattern: 1. Problem 2. Krav 3. Løsning herunder konventioner gentænkning/refleksion interessenter og ansvar forskellige strategier 4. Test 5. Dokumentation 6. Konsekvenser 7. Relaterede patterns 6

Fra J2EE til JEE 5/6 Convention over configuration Dependency Injection Interceptors EJB 3 og JPA support (transaktionsstyring) Deklarativt fx. @Stateless 7

Overflødiggjorte patterns Design Pattern Service Locator (JNDI indkapsling) Composite Entities (CMP) Erstatning Dependency Injection JPA. Entiteter er blot POJO's Value Object Assembler (merge, transform, select ) Business Delegate (Lag ml. presentation og business tier) Domain Store (Transparent persistering af objektgraf) Value List Handler. (iteration over objektgraf) EntityManageren i JPA + detached objekter EJB3.x. Business interfacet kan injectes i presentation komponenten. EntityManageren kan ses som en standardiseret implementation af Domain Store) JPA entiteter kan detaches + Paginator pattern 8

Domæne drevet design Generelt fokuserer Adam Bien på så få lag som mulig Konkluderer at der kun er to nødvendige komponenter: PDO og Gateway. Stiller sig kritisk i forhold til DAO. 9

PDO Persistent Domain Object PDO = Entity med state + forretningslogik! PDO er passiv Bør kunne læses af forretningsfolk Highly cohesive Problem ved detachment (Serializable) og bør derfor kun kunne tilgås via en reference DTO. 10

Gateway Stateful session bean state på serveren (bundet til sessionen) webkomponent skal også være stateful @TransactionAttribute(NOT_SUPPORTED) EntityManagerens mode er EXTENDED Metoder der ændrer data skal have @TransactionAttribute(REQUIRED) Bruges sammen med PDO'er (via referencer), der udstilles direkte til presentation-laget Performer godt. 11

Paginator Ønsker at returnere en graf af objekter, der skal itereres over. Klienten ønsker kun en delmængde Lad klienten anvende EntityManageren implementation af Paginator direkte ingen DAO. Servicen kan implementere Iterator<List<X>>. query.setfirst(index * pagesize) query.setmaxresults(pagesize) Performer godt (små result sets) Data kan være gamle lige efter et fetch Bør bruge optimistisk låsning 12

Fluid Logic Dynamiske programmeringssprog kan agere med applikationen runtime gennem ScriptEngine (siden JDK 6) Vedligeholdelse af ofte ændret kode. Stor flexibilitet da scripts kan ændres og erstattes runtime Dårlig performance pga. runtime fortolkning Ingen typecheck mere test Sikkerhedsbrist (fx System.exit(1)) 13

Andre spændende patterns Design Pattern JCA Dependency Injection Extender Thread Tracker Problem, der løses Tilgang til inkompatible ressourcer i en transaktion Injection af ikke kompatible frameworks komponenter (fx Guice) Associering af en metode i en deadlock med tråden, der er stucked 14

Mening om bogen Fokuserer meget på overgangen fra J2EE til JEE (skrevet i 2009) En form for opslagsværk Udmærket beskrevet med små kodeeksempler Egen erfaring vil klart øge forståelsen af problemstillingerne 15