introduction to adf in jdeveloper 10g — is it oracle forms developer yet? peter koletzke technical...

42
Introduction to ADF in JDeveloper 10g Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

Upload: lora-jones

Post on 30-Dec-2015

241 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

Introduction to ADF in JDeveloper 10g — Is it Oracle Forms

Developer Yet?

Peter KoletzkeTechnical Director & Principal Instructor

Page 2: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

2

Moi

Page 3: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

3

Vous• Forms development

– 1-2 years?– 3-9 years?– More than 9 years?

• Java development– 1-2 years?– 3-9 years?– More than 9 years?

• JDeveloper– 1-3 years?– More than 3 years?

Page 4: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

4

On the Positive Side…

If we do not find anything pleasant, at least

we shall find something new.

—Voltaire (1694-1778), Candide

Si nous ne trouvons pas des choses agréables, nous trouverons

du moins des choses nouvelles.

Page 5: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

5

Agenda

• What is a framework?

• What is ADF?

• Is it Forms?

Rumor: There is a really good book about

JDeveloper 10g coming out soon.

Page 6: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

6

J2EE Problem 1 - Design• J2EE offers design flexibility

– Multiple architectures (various tiers)– Multiple languages– Multiple data layers

• Choosing the technology combination is difficult– EJBs or BC4J (ADF BC)?– Struts or MVC controller?– JSP pages or UIX or Java Swing?– Database code or web services?

Java 2 Platform, Enterprise

Edition

Page 7: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

7

J2EE Problem 2 - Development

• J2EE code is primarily 3GL– Lots of lines of code, repeats for each app– Notepad and vi are limited development

environments

• Need help creating code – Generate the standard stuff– Hand code the app-specific stuff

• Need to reuse proven methods– Code libraries that handle the

internals

Page 8: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

8

J2EE Problem 3 – Deployment

• J2EE deployment is complex– Java applications have many files

• Not less than a thousand

– Need to install application files in the right places on the server

• Need to configure the server– Lots of required files – web.xml, server.xml, J2EE config files

• Need to connect the layers – Requires more than simple client to

database server connection

Page 9: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

9

The Solutions• Problem 1 (many design options)

– Ask your J2EE expert – Read success stories– Use frameworks – they provide a specific path

• Problem 2 (lots of repetitive, required code)– Java tools (like JDeveloper)– Frameworks in the tools

• Problem 3 (deployment complexity)– Java tools help– Ask your J2EE expert

• Not as important as with problem 1

Tools can’t help here, yet.

Page 10: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

10

What is a Framework?

• An extension of good reusable code strategies– Solve a problem once, use the code again in

multiple projects– The code must be generically written but still

functional

• Provides a key service– For example, Struts framework provides control of

page flow in a web application– Think “API”

• Application Programming Interface• Code libraries you can use for extra functions

Page 11: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

11

Benefits of a Framework• Promises increased productivity through code

reuse– Prebuilt code supplies functionality you would have

to build yourself• For example, connection layer to the database through

JDBC– You write less 3GL code

• Simplifies complexity of a high-level architecture– Complexity is hidden in the prebuilt code– Handles infrastructure and communication between

layers– You just hook into it

• Provides structure to the myriad number of technology combinations– The path to a particular goal is predefined

Page 12: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

12

Components of a Framework• Code libraries

– Provide the basic functionality• App-specific customizations usually appear in XML files

– Extendable• Write your own code to supplement or replace the basic

functionality

• Documented method– You cannot be productive unless you know how to

use the libraries

• Tools– Optional but useful part– Without tools, you’re on your own with the

framework code

Page 13: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

13

An Example• ADF Business Components (ADF BC)

– Formerly BC4J– Java code layer that connects application to the

database• Contains base libraries that provide the

connection capabilities– You can extend the libraries to replace or

supplement the functions (Java files)– You define XML files that supply application-

specific customization• For example, the definition of a table

• JDeveloper contains ADF BC editors – Edit the XML files– Create Java files

Page 14: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

14

ADF BC Code ADF BC Libraries

EntityImpl.java

ViewObjectImpl.java

Countries.xml<?xml version='1.0' encoding='windows-1252' ?><!DOCTYPE Entity SYSTEM "jbo_03_01.dtd">

<Entity Name="Countries" DBObjectType="table" DBObjectName="COUNTRIES" AliasName="Countries" BindingStyle="Oracle" UseGlueCode="false" RowClass="location.model.CountriesImpl" > <DesignTime> <Attr Name="_isCodegen" Value="true" /> <Attr Name="_version" Value="9.0.5.16.0" /> <Attr Name="_codeGenFlag2" Value="Access" /> <AttrArray Name="_publishEvents"> </AttrArray> </DesignTime> <Attribute Name="CountryId" IsNotNull="true" Precision="2" ColumnName="COUNTRY_ID" Type="java.lang.String" ColumnType="CHAR" SQLType="CHAR" TableName="COUNTRIES" PrimaryKey="true" RetrievedOnUpdate="true" RetrievedOnInsert="true" > <DesignTime> <Attr Name="_DisplaySize" Value="2" /> </DesignTime> </Attribute>

Application Specific Files

COUNTRIES

Table

CountriesImpl.javapublic class CountriesImpl extends EntityImpl { public static final int COUNTRYID = 0; public static final int COUNTRYNAME = 1; public static final int REGIONID = 2; public static final int LOCATIONS = 3;

public CountriesImpl() { }

public String getCountryId() { return (String)getAttributeInternal(COUNTRYID); }

public void setCountryId(String value) { setAttributeInternal(COUNTRYID, value); }

public String getCountryName() { return (String)getAttributeInternal(COUNTRYNAME);

}

public void setCountryName(String value) { setAttributeInternal(COUNTRYNAME, value); }

CountriesViewImpl.javapublic class CountriesViewImpl extends ViewObjectImpl { public CountriesViewImpl() { }

public void executeQuery() {

super.executeQuery();

}

public void setWhereClause(String whereClause)

{

super.setWhereClause(whereClause);

}

}

CountriesView.xml<?xml version='1.0' encoding='windows-1252' ?><!DOCTYPE Entity SYSTEM "jbo_03_01.dtd">

<ViewObject Name="CountriesView" SelectList="Countries.COUNTRY_ID, Countries.COUNTRY_NAME, Countries.REGION_ID" FromList="COUNTRIES Countries" BindingStyle="Oracle" CustomQuery="false" ComponentClass="location.model.CountriesViewImpl" MsgBundleClass="oracle.jbo.common.JboResourceBundle" UseGlueCode="false" > <DesignTime> <Attr Name="_version" Value="9.0.5.16.0" /> <Attr Name="_codeGenFlag2" Value="Access|Coll" /> <Attr Name="_isExpertMode" Value="false" /> </DesignTime> <EntityUsage Name="Countries" Entity="location.model.Countries" >

JDBC

Page 15: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

15

Challenges of Frameworks

• Learning the method– Tools help– Without tools, you spend more time developing

• Using the “out-of-the-box” functionality– If you can live with this, you will save lots of time

• If you customize, you might spend more time than you would spend if you build your own

– Use the normal framework definitions to build app-specific code (often XML files)

• Getting assistance– Vendor support, online user forums,

books

Page 16: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

16

Agenda

• What is a framework?

• What is ADF?

• Is it Forms?

Page 17: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

17

Aiming High

Your scheme must be the framework of the universe;

all other schemes will soon be ruins.

—Henry David Thoreau (1817–1862), A Week on the

Concord and Merrimack Rivers

Page 18: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

18

Sounds Like a Job for a Tool!

• JDeveloper 10g– J2EE IDE – Code organizer– Code generator

• Application DevelopmentFramework– Available only in

JDeveloper 10g

Page 19: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

19

Oracle Application Development Framework (ADF)

• Attempt to meet the J2EE challenges• Feature available only in JDeveloper 10g• A wrapper for other frameworks

• ADF BC (formerly BC4J)• ADF UIX (formerly UIX)• ADF JClient (formerly JClient)• Struts (non-Oracle, Jakarta Project open source)

• An architecture– Implies a method and a tool

• Based on MVC

Page 20: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

20

Model-View-Controller (MVC)• SmallTalk strategy for application components• Now a J2EE design pattern• The MVC separation in layers allows you to plug in

different front-end clients• Provides ability to separate layers for development

– E.g., Can develop and test the model layer separately

Model

ControllerView

Code to access data

User interface

code

What happens when user interacts with UI; page flow

ADF splits the Model layer in

two.

Page 21: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

ViewView

ControllerController

ModelModel

Struts

ADF UIX

Swing visual aspect JSP

Swing model

ADF Bindings

ADF Data Controls

Java Local ClientWeb Client

Swing event

handlers

ADF JClient

ADF Architecture

Business ServicesBusiness Services

ADF Business Components

EJB Session Beans

Web Services Java Classes

Page 22: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

22

• Code layer for accessing data sources such as a database

• Responsibilities:– Persistence

• Data storage after the program ends

– Object-relational (OR) mapping• Translating database objects to object-oriented

structures

• Use this layer to code business logic– The J2EE Business Tier

Business ServicesBusiness Services

ADF Business Components

EJB Session Beans

Web Services Java Classes

Page 23: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

23

Business Services Technologies• Enterprise JavaBeans (EJBs)

– Standard, popular, pure Java, J2EE code layer– Uses a runtime container process

• Web services– Functions and resources written by a web provider– Can be incorporated into your application as

remote calls• ADF Business Components

– Formerly BC4J– Full framework for accessing Oracle databases– Easy to develop, powerful, has data caching

• Java classes– Plain Old Java Objects (POJOs) supply data– TopLink in JDev used for OR mapping

Page 24: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

24

• This is the main innovation of ADF!• Connects Business Services to the

View layer– Java local clients (heavy client)

• Delivers data from Business Services to the View layer

• View layer then updates the display

– Web clients (light client)• Receives instructions from the Controller layer

as requests for data retrieval and updates• Requests update of View layer

ModelModelADF Bindings

ADF Data Controls

Page 25: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

25

Model Layer – ADF Data Controls

• Common code layer for multiple business services

• Appears as list of components available for a specific business service

• Component list changes based on selected data element

• Selecting a component automatically binds it

Page 26: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

26

Model Layer – ADF Bindings

• Declares which data is connected to a user interface component– For example, LocationId text item is bound

by code to the LOCATIONS.LOCATION_ID column

– Works with the data controls to supply data model link from view components to business services

– Data Control Palette in JDeveloper automatically binds the controls

– You can also code this manually

Page 27: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

27

• For web clients only• Defines what page is displayed next

– Can apply conditional logic– Can interact with data to prepare next page– “Model 2” JSP (code logic not page links)

• In JDev 10g (9.0.5), Struts is the default controller– Jakarta Project open source effort– Defines pages and actions that display the

pages

ControllerController

Struts

Page 28: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

28

• User interface technologies– Java local client

• Java runtime on the client• Part of J2SE (standard edition)• Uses JClient framework to communicate with model layer• Swing contains its own MVC components (Swing Model,

event handlers for Controller, and visual aspects for View)

– Web client• JavaServer Pages (JSP) technology

– J2EE standard, light-client, tag-based interface

• ADF UIX– Oracle-specific, XML-based interface used by

E-Business Suite applications

ViewView

ADF UIX

Swing visual aspect JSP

Swing model

Java Local ClientWeb Client

Swing event

handlers

ADF JClient

Page 29: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

29

ADF Does Not Help You Decide• No single, predefined technology path

• ADF supports many technologies– “Productivity with Choice”– Similar in that way to Designer supporting

various life cycle models• Traditional waterfall, RAD, Start-in-the-middle

• Still need to make the design choices– However, some choices are better

supported• For example, Struts is the default Controller

Page 30: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

30

Other ADF Components

• Code libraries– Mostly those of the individual frameworks (BC4J,

Struts, JSP tags, JClient)– Common ADF runtime libraries

• For data binding and model support

– Documentation (online Help), OTN forums

• Tools– JDeveloper utilities and work areas

• Development method– Very loose set of steps– Uses JDeveloper tools to bind data

Page 31: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

31

The Development Method

1. Create application workspace

2. Create Business Services and Model layers

3. Create View and Controller layers

4. Test and debug

• Use the same tools for development regardless of technology choices

Demo

Page 32: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

32

Agenda

• What is a framework?

• What is ADF?

• Is it Forms?

Page 33: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

33

Nothing Like a Good Drill

Man is a tool-using animal. ...

Without tools he is nothing,

with tools he is all.

—Thomas Carlyle (1751–1881), Sartor Resartus

Page 34: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

34

What’s Good About Forms?• Nothing better for highly-responsive UIs

– Best thing around for rapid data entry– GUI controls are unmatched in pure HTML

web applications• Java applications (with Swing controls)

deployed on the Web have similar controls

• Nothing better for RAD– Really fast prototypes– You don’t need to learn Java

to do Forms

• Still used by Oracle Applications

It’s betterif youknow Java.

Page 35: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

35

What’s Bad About Forms?

• It’s a 4GL and has limitations

• Legacy technology– Proprietary; not industry standard– Needs Oracle AS to deploy– “Functionally stable” (IBM term?)

• Oracle is focusing on J2EE– Development tools– Application server– Database

Page 36: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

36

What’s Good About JDeveloper and ADF?

• Oracle is focusing on J2EE– JDeveloper is a J2EE tool

• Supports any style of J2EE code– Heavy client; light client

• Makes J2EE design, development, and deployment easier– No need to think much about “plumbing”

• Supports different development styles– You can write 3GL code– You can use declarative tools

Page 37: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

37

What’s Bad About JDeveloper and ADF?

• It manages 3GL code – 3GL code is hard to create

• It is not a RAD tool• You need to know Java

– Big learning curve– Object-oriented thinking

• J2EE has challenges– Not JDeveloper’s fault

• You need to think about frameworks– It supports all paths– It provides no clear path

Page 38: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

38

Is ADF Forms Yet?• ADF is really just a wrapper around

proven (older) frameworks– ADF BC, ADF UIX, JClient, Struts

• Would be an “Emperor’s New Clothes” except…– Data controls and bindings

• Very nice innovation• This does speed up development• Oracle submitted to Java Community

Process (JCP) as Java Specification Request (JSR) 227

Page 39: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

39

So, Is ADF Forms Yet?• It can help shops that have mostly J2EE

experts– J2EE experts will be more productive– They need to learn the ADF process

• It can also help shops who have “traditional” non-J2EE Oracle developers– Forms and PL/SQL developers will be

productive with the declarative tools• With training, they can write Java extensions• Much of the complexity is hidden

– They need a J2EE expert to guide them and code the internal, complex stuff

Page 40: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

40

Please Tell Me!• Can you achieve the productivity of

Forms using ADF?– ADF is as close to RAD as any current

J2EE tool– It is state-of-the-art plus

• Good innovations• Very developer-friendly• Costlier than alternative J2EE tools

• In other words, “Not yet”– Stay tuned for 10.1.3

Page 41: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

41

Summary• Frameworks help development

– Forms is a framework • One way to develop and deploy

– Not so easy for J2EE applications

• ADF is a framework and it also helps– A big step in the right direction– Provides support once you determine the path

• Room for growth– More declarative tools– More recommended paths

• Combining technologies is the remaining challenge

Page 42: Introduction to ADF in JDeveloper 10g — Is it Oracle Forms Developer Yet? Peter Koletzke Technical Director & Principal Instructor

42

DesignerHandbook

DesignerHandbook

DeveloperAdvancedForms & Reports

DeveloperAdvancedForms & Reports

JDeveloper 3HandbookJDeveloper 3Handbook

ORACLE9iJDeveloperHandbook

• Founded in 1995 as Millennia Vision Corporation

• Profitable for 7+ years without outside funding

• Consultants each have 10+ years industry experience

• Strong High-Tech industry background• 200+ clients/300+ projects• JDeveloper Partner• More technical white papers and

presentations on the web site

http://www.quovera.com

Books co-authored with Dr. Paul Dorsey Personal web site:

http://ourworld.compuserve.com/ homepages/Peter_Koletzke

Available in Sept

Available in Sept

ORACLEJDeveloper 10gHandbook

Also co-authoredwith Avrom Roy-Faderman