WWDC2004 Session 633
Transcript
Kind: captions
Language: en
good afternoon everybody and welcome to
the web objects overview session my name
is Bob Fraser I am the product manager
for web objects and also Java now and
this is going to be an introductory
overview to the web objects technologies
and like to start with the usual
exercise anybody who's using web objects
could you please raise your hands yeah
and for how many of you is this the
first time you're coming to a wdc
session on web objects ok great so what
we're going to cover is an overview of
web objects some of the things that
Apple is doing with webobjects how to
get wet objects and we also have some
members of the community here who are
going to talk about some of the things
that are going on in the whole general
webobjects community so web objects is a
great set of tools and frameworks for
doing rapid application development of
Java server applications and web
services and its really really neat
stuff what you get is the easiest way to
build j2ee compatible applications so
Java is the way to do server
applications at least if you're not
Microsoft and one of the things it's
great because it's standards-based it's
cross-platform it's interoperable of a
lot of things there's great connectivity
to a bunch of stuff but building a real
enterprise level three tiered
application it almost takes a rocket
scientist it's a complicated thing so if
you look out there what have a lot of
people been doing they've been trying to
reduce the scope of effort involved come
along with tools that it can increase
productivity and reduce complexity you
see that one example of the Sun Creator
product that's been announced here and
at javaone is exactly trying to solve
that kind of a problem well we have a
mature product out there web objects
which addresses the same kind of issues
in the same kind of problems and what
you get is everything you need to build
enterprise-class applications in one box
so with webobjects you get an integrated
development environment it layers on top
of xcode or windows and you can gives
you the IDE for all your
and rapid prototyping it does database
mapping it includes a full object
relational mapping model that will take
you back and forth between SQL databases
or jndi data sources and do that mapping
and turn that into objects it also gives
you some really incredible assistant and
wizard technologies that lets you do
code free prototyping but then these are
extensible and then you can extend them
and turn them into full scalable
applications because they use the
powerful frameworks that are built in
that are all very very scalable it is
also an outstanding package of web
services both as a consumer and a
provider and they're not that many great
web they're not that many great web
services packages for providing web
services out that we think this is a
great offering and it's one of the more
common uses of it is to do HTML
presentations or three tiered HTML based
websites so the advantages are the usual
but one thing's you want to have is a
few things you want to have in your
product faster cheaper better and how
that relates here is it accelerates your
time to market because we'd have a
developer tool chain that walks you
through the process of building these
applications and it's visual it's a
visual ID e so it simplifies this and
makes it so much more approachable you
get better code at the end of the day
because there are years of best
practices that are built into these
frameworks so we've had a lot of bright
people working on this stuff for a long
time and it's all encapsulated in these
frameworks that come with web objects so
there's usually a tool and a framework
to go together and what this does is it
does a lot of the heavy lifting for you
so a lot of the object relational
mapping a lot of the templating a lot of
the generation of web pages a lot of the
request response handling a lot of these
things have been well designed and baked
in that lets you worry about your domain
expertise the piece that you actually
really want to build and not have to
worry about a lot of the infrastructure
on the plumbing and because you don't
write a lot of code you don't maintain a
lot of code and so your overall cost of
ownership of a project of a product of a
life cycle of something is reduced and
the other thing you'll see is you'll see
how easy it is to do incremental
development and you get an ID and you go
what if or I need to make this little
change over here you'll see how how
fluid that is and that also reduces the
cost of ownership because requirements
are always changing people always come
up and say I'd like the button but I
want it here and I want it blue and I
want to do this and with web objects
that's like really neat and easy to do
so let's look at a classical we cheered
application architecture and we have on
the left your data access layer with web
objects you can talk to jdbc databases
and jndi data sources and then you'll
typically have a business logic layer or
fancy word for its statements and then
you have different presentations that
you may want to do and with web objects
you can do HTML based web service based
or rich client based presentation layers
as you get your choice so that's kind of
like you know when you're mapping out a
nice enterprise application you've got
your different layers web objects has to
land framework that pretty much works in
each of these different each of these
different layers so let's look at that's
the architecture now let's look at what
the developer flow would be like so with
the data access layer we have a tool
called eel modeler so this is the
modeling tool so what we want to do is
we want to get away from tables and rose
and in GI attributes and we want to
model that at a higher level and get
that to the object level once we have
this now we can operate at a higher
level in our application and in our
application development then we bring it
into Xcode and we start writing a little
bit of business logic in Java so
everything's portable and this is where
you would do your rapid prototyping and
then from here what you can do is you
can take it and use our web objects
builder design tool for doing HTML
webpage generation there's a web
services assistant for building web
services and there's also a way to do
rich java client applications and a tool
there as well now one of the interesting
things to notice about this diagram if
we look if we look in the middle here at
Xcode we see three lines coming from
that same that same point there you've
get
one model and one set of business logic
that's operating on that and you're kind
of presentation layer independent and so
what you can do from the same model
driven design you can actually go to a
web page go to web services or go to a
rich client based on that same model
model driven programming is a really
powerful paradigm error and we put it to
good use and we find it very common for
a lot of our customers and partners to
actually do that they'll actually have
multiple they'll actually have multiple
applications it will have multiple
access points driven this way so a
scenario that might make sense you've
got some data you've got a website for
the front of the house you want I want
to have a web interface html-based
people come to your website they click
on things through an HTML interface in a
standard browser okay but then you may
want to have an in-house behind the
firewall DBA app where you're updating
like a product inventory that you might
like to have as a rich client you can
drive that off the same model and then
you decide later on you want to automate
some business process you so you may
want to add some web services and that
can be lights out computer to computer
and all of those can interact with the
same model with the same either in the
same application or you could just build
another quick separate application so
step one is building the model now what
eel model allows you to do is it allows
you to reverse-engineer the data source
so all you need is a jndi URL on a JDBC
access to a database any SQL database
and you can basically go in there and it
will find the tables the columns the
rows and understand all of these
entities and properties or what you can
do is you can use you'll modeler for
doing forward schema design so you can
drop in entities drop in you know
properties and stuff like that and it
will actually generate the the tables
for you and we support we support a wide
variety of databases in this in this
modeling tool and the mapping layer that
goes with it everything from like Oracle
and sybase and front base and open base
and my sequel and ms SQL and I'm
probably forgetting but if you go to the
website there's that there's a list of
of a bunch of them and then there's
other people who've done plug-ins for
like db2 and postgresql and stuff like
that so pretty much you can get out
there and get access to just about any
database that you want so that's the
design tool now we have this conceptual
model so now the next step well here's a
picture of the tool and we're going to
have a little demonstration here but one
thing to notice is that we have kind of
like an ER entity relationship diagram
here this was actually generated via
modeler and you can also see that we've
also gotten the relationships as well so
not only did we find any of the tables
any of the properties and the related we
now also have the relationships and the
interaction between this and now you
actually get a high level you have a
high level picture of this this alone
would already be kind of worth the price
of admission for a lot of people for a
lot of projects we get so much feedback
from places such as such as universities
they got a lot of turnover they're
working on grad student power and then
basically after they're like five years
or four years of something nobody knows
what this thing is doing anymore
somebody can pop into the model and they
can open it up and look at it and go oh
these are the entities these are the
things that are in there or you could
walk up to a database in Oracle we have
people go in and reverse-engineer Oracle
databases and there's stuff in there
that the dbas didn't even really know
that they were really still playing
around with anymore and you can get a
quick view of everything glad this way I
have what did that just do ah that's
what that button does okay about
that okay now at runtime we do all of
the object relational mapping for you so
we do all of the database access we do
all the data persistence so you don't do
any SQL we do the fetches the read
rights updates deletes all that kind of
stuff and this model in and the mapping
is database independent so it would be
analogous to container manage
persistence only we believe a little
easier to implement its database
independent and you can also query
across multiple databases simultaneously
Ashley so you can actually build a model
and actually pull data from like a GED I
source pull data from a like an Oracle
database and then actually put those in
the same put those in a in your
application and mix with those so it's
nice because you get transparent
persistence you get database
independence and you get to the ability
to do with a nice high level data
aggregation those are all really nice
really nice features and with that I
would like to invite Darrell Lea up to
give a demonstration of eel modeler hi
everybody so just want to show you you
mod ler we bring up the demo machine
okay great so I just want to show you a
quick reverse engineering demo and just
how easy it is to reverse-engineer a
database so let's create a new model and
I'm going to select a JDBC data source
and I'm selecting our standard whoa real
estate database that would comes with
every copy of web objects and I'm just
going to take basic defaults here and
finish my model and boom you know that a
couple seconds and we have or hope
debase reverse engineered as you can see
we have all of our relationships models
if you look on the left side Holies what
we call entities are mapped to your
tables and if you select a user table we
also have a attributes or what we call
prove that map to your columns so first
name would map to calm in your database
so if you use an inspector you can check
it really quickly and that maps to the
user table in the database another nice
feature is say instead of reverse
engineering you actually want to just
model your data base and your schema
first and then you want to black that to
your database and just say we had done
modeled this already but it wasn't in
our database what you can do is select
our SQL generation assistant and what
you can see here is that we've
composed all the SQL queries and
statements that you'll need base all the
foreign keys and primary keys and
constraints you'll need to create the
database so with that demo that shows
you just how quickly you can get up and
running and how you can model your
database and thanks thank you though
okay we have all the way to get things
in and out of our database so now that
we've done this we can start to
prototyping so the next step would be to
bring this into the IDE and start
writing a little bit of code and start
developing a prototype now the
advantages of this what happens in web
objects is you get a better way to write
code it's a better development basically
what you do is you start prototyping the
application and you get something locked
running right away so contrast this to
let's say something like you know the
aerospace industry where you're going to
go with the six months to the
requirements so then you get a bunch of
working on it then six months later you
that isn't quite what I wanted all right
that this is a much more fluid
interactive way of working photo text it
minutes a few clicks of a box and don't
do you get your cut where that is if
you're in half an IT you get the people
are going to be your end user customer
that's you know your good salty or you
get them in you see let's go yeah sex
and one Barry can nail down the design
fire they actually have it can touch
feel mc2 really it just what they're
gonna get and going to work then you
start you start occasion you add in
parts of the function in stuff that you
need and you only deliver the occasion
each of these steps along hey it's only
the application has happened long way
can you would keep
integration it's somebody coming at the
end of the things I said so feel this
gives you a better way to develop an
applet the things generally web
applications now we're going to move can
let so with projects you get a cool web
builder webobjects ler both I like an
xml editor but a concept that it has is
kind of like a binding of it it it's a
lot actually tie the day yesterday to
write a bunch of JSP is in binds out
they are um it's really elegant you can
do the drop with you to build palace of
r you come home and see a sign over and
over again in weblogic very well you can
you can compose and the picture of the
stuff and at the bottom we've got some
of the keys infinity intuition that
actually came from the model so we
actually throw a whip there in there
we're also aware of your ad in Koh and
Yu property and methods soap holder is
oh so it's efficient in a way going up
their code epica the actual data mop by
the database as well at the same time
then at runtime well we take an HTML
template we take data coming which it is
with the business lot and we can kick
out the personalized web pages so that
there's a there's a binding page and
then the data sources can be from your
business law look out it could be
something the Cape up from out of the
database and then this sir the final
output pml
another demonstration here of building a
application and I really modify it thank
you Bob I'd like to show you is a real
temptation you can built right out of
our books and so will go straight to
Xcode and extend and here I much fat and
just go and we'll there are a number of
default pains I won't be false we'll
just select our real estate model really
quickly so the next thing I'll ask me is
what is mate I want to display and i'll
just pick listing address to keep it
simple and in this pain it's given me to
select apps as you can see the Peavey
mode gives you an idea of what the HTML
page will look like i'll just select
this this layout next is figure out what
I display they all that information and
then let's just query on the city and
let's chat in a second Xcode and
hello
there we go and what's that really quick
so as you can see there's really not to
make too much stuff here what we get is
a few java fossils with one blow
component and our model we remodeled our
database and boom there's our app and
it's fully functional out of the box so
let's search for an address and then we
have our results really quickly if we
search for something that wouldn't be
there then we have this table shows
thing so let's say I don't like the way
this interface is and I want to make
sure this table does not show up we can
go into a web babak's builder by arklow
component here and let's just look at it
really quickly and what we're seeing is
this table here I don't want it to show
up so I think I'll wrap that in a low
conditional which I can say hey if
there's no addresses of bull then don't
display the table so right here this ?
is our low conditional and let's go over
and bind that to our count
so that says is if there's no objects to
be displayed don't show that table and
I'm going to save that and one great
feature about web objects is that you
don't have to always rebuild your app if
you're editing your web component a lot
of times you can just save your
component and then refresh so I'm just
going to refresh this page as you can
see i'm not going to compile the app at
all and boom our tables not there by
default I search for sale a dare I'd
search for something that's not there it
disappears so hopefully I gets across
how easy it is to how fast it is to
develop your applications and you don't
have to bother with when your apps a lot
of times so back to Bob thank you do so
we built a model we've actually
generated a rep rapid prototype of an
application and you've seen how with a
completely visual environment we get in
there and drag out the design and it's a
very cool maybe it's got images it's got
repeats loops it's got conditionals it's
got tables it's got all that kind of
stuff in there and you basically just
drag it all out visually and then if you
need more complicated business logic
stuff uses when you start putting in the
pudding in the code no messing with jsps
or any of that stuff and this is fair
you can see the power starts coming in
if you need to do incremental
development you pop this up yet new
features save it you go the rapid
turnaround where we didn't have to stop
the app build a war-weary deploy
anything like that very seamless very
quick very fluent keeps your your your
mind going on and focusing on moving the
ball forward and getting you know the
news for new features in ok so that's an
example of kind of you would go about
building an HTML application we all do
services now web services been getting a
lot lately and it's two definitions of
web is anything that has something to do
with the web and it might be a service
that's kind of like the big one that you
hear a lot about and one that gets over
high and everything like that then
there's the more narrow definition of
web services is really nothing more
fancy than remote procedure what we've
been doing for 20 years only we gave it
in but one thing we do is we actually
define a set of standards so we do XML
we do so and we do wsdl in a compatible
we have thing from all the Java that sun
and IBM and everybody else is doing and
even net now this actually really good
thing because the reason why this is a
powerful concept and it's taking taking
off is that it's a real killer for
application integration so they have
different departments that haven't been
to each other don't even care to but if
they both implemented web services and
to find an API set then both hooked
these things together lights out
operation don't even have to really bug
each other and that's I think it's awful
low hanging fruit we're actually seeing
this is but group and department level
who have like their own archive or store
of data and they want to be able to
share it and and that is really powerful
easy to do and web objects is a great
and one of the things I'll mention is we
do both side and the servers so the
other thing and am nice about web
services is you don't really have to add
a whole bunch you know you got your
application you had a layer that's
basically all it and how to what the
semantics are and then you're done and
there's a lot of different ways to get
at it so now all of a sudden you can
have a web objects Java server app and
you can vend web services that could be
consumed by an applescript somewhere by
pearl by C++ by a Java app or not so now
you you've basically expanded so can
consume the services at your building
which is always a good and you empowered
lots of programmers because you don't
have to get into the whole really
heavy-duty thing if you can write a Perl
script can call a webservice then you're
good to go and you're in the game so
built web services again we use the
model driven approach here a tool for
that as well and so we can either
consume web services get a wsdl and a
data data point somewhere we can
actually get that XML
work with that and a gate with other
sources and do a presentation layer like
a web thing that may go and get like a
currency puffle website to do the
calculation of the current conversion
like that we can do that it's probably
you know a bullet samples have gone and
getting like Fahrenheit see us or
something like that okay that's not
terribly taxing do that kind of thing
but taking data sources out of a
database and actually doing the server
side do not there's not as many
offerings out there for that and what we
can do is you have it in a data source
we can publish it and we can publish a
service interface for it and any java
code that you have you can also wrap
that in the method and wrap that in a
service as well and so you're the web
service producer game which which is
really exciting and we do this without
you having to worry about the XML
without having to worry about the soap
and without having to worry about the
wsdl quick view of services XML
everybody's heard of that it's just a
markup language that's how you get the
data represented so in an envelope and
that's basically who is coming from
where it's going to and then wsdl is
kind of like publishing it in a phone
book and saying my services here's work
and here's how you call it and so that's
a nutshell and so we have a tool which
will let you basic which will let you
basically go in and build a server and
publish an interface for consuming web
services so what we're going to do is
we're going to basically attached to a
database and we're going to show how we
can actually generate complete web
services producing application here
right read with web object out of the
box here and so we have general for
another demo here okay so let's go back
to Xcode and create a new project and
what I'm going to do is create a direct
to web services project and we'll just
call this test
expect web services and I'll take the
default options again and here we go
back to our real estate model and build
in lot now while that's build it what
I'm going to do is launch our web
services assistant and what's going to
happen is so far is going to come up
it's going to give me our URL that I can
use the web store with the web services
assistant and so what I'll do is I need
to copy this URL web service assistant
and x2 it and we'll get our apps up here
so the first thing you want to do in in
your web service is create a new web
service so let's start that and I web
services button and we'll just call this
a listing service and okay so now that
we have our listing service I need to
pick companies that I want to publish
we'll just keep this really and I'll
select the listing address so there we
and know now that I'm service I need to
tell it okay what operations are what
can I what can I interact with so what
I'll do is I'll create a new operation
and i'll just call with my list
operation and I need to tell it okay
what entity or capable do I want to
display or query upon and then what what
type of operation I want to do so i can
delete or is it or as an update i'm just
going to pick to perch so boom we have
our listing service or listing off with
them the first thing I called is okay
what parameters am I going to pass in to
this operation and I'll just similar to
our last demo I'm going to just take a
city as a parameter and i'm going to add
that
you can notice down here there are
different kinds of operators uses less
than greater than equal like obligation
and sensitive like next thing I want to
figure out what we're going to turn
after our operation is queried so I want
to return all the address attributes
there okay so now we've got our return
values and I think we're about ready to
go so let's just save that really and I
want to test my service so we have a
nice little built-in testing assistant
and I can without writing a piece of
code just start making queries on the
application so San Jose but there is a
just as arguably returned and now if you
do a query that has nothing there or you
can search on crew patina another great
feature of our assistant is some got my
operations and all defined and stuff
like that I can we actually compose all
the ws sell for so you most people they
have to go out there and they have to
hand code this hand edit this and figure
all this stuff out how to bind this and
all the namespaces and stuff like that
what we do is we give you although wsl
wsdl for you and you don't have to do
any of this so here we go
so hopefully that demonstrates just
needs to build a web service are we
having fun yet so then out of webobjects
mac OS 10 and mac o are also just a
great services developed environment and
because we bake it into the operating
system so you have all of the services
from web objects but then everywhere in
Mac OS 10 either a client or Apple
events there are 0 s level features that
will the elbow civil services that
basically turn that can turn that into
soap or xml RPC and back and forth and
so you can actually we have tools
there's one call let's make stubs will
find on your regular developer tool CD
if you give it a wsdl description file
it will generate applescript java ll
generates applescript cocoa or c++
bindings to actually consume and produce
to consume that web service so it makes
it really easy to build and end-to-end
application because we've already baked
in a lot of the client stuff already in
the operating system I'll transport the
marshaling and on marshalling of data
data types all that's already in the OS
so it's really it's really cool so we've
got it in cocoa we've got it in
applescript it's in perl it's in web
objects and so we're a great platform
for all that and then you can always
take that client and put the web
services slide on another client as well
okay and we also have the ability to
build stop applications or rich client
applications so the web services
assistant that you saw there actually a
web objects application that was
generated in java swing so it's actually
generating that application that we were
using to build the to actually configure
the web service when we hit the test
button it are actually figured out on
the fly what s parameters and response
types are going to be and
generated the swing panel for that on
the fly we also have that technology
baked into ability to build rich just
applications also from the model driven
fashion so again Darrell please let me
create all this stuff up here so what
I'd like to show you is a director job
of client location and how we're taking
the same real model and then just
reusing it again to create a desktop job
application so let's select that
template name this okay so we'll take
the defaults again and then just add a
real estate model and these are some
Java client specific things whether you
want to download your classes or you can
optimize that for your efficiency and
hear some stuff for configuring web
start so let's just build and run that
quickly as you can see there's not much
different in a directed java client
project layout I mean we still not a
Java classes there is one java client
component here that helps you configure
some of the java client parameters but
essentially you know a lot of stuff is
in the same place and you have for your
model right there so it locked right
here and as you can see we have a fully
functional app out of the box let's just
query on something really quick we'll do
our san jose query again and boom this
is a different entity but as you can see
there's a bunch of addresses if i double
click on one of these rows we have a lot
of detail that we can configure we can
delete rows we can add new information
and make new relationships with that so
it doesn't just end here you can can
start configuring your interface and
what we have is an assistant that you
can bring up and tell it how to present
some of the data or what to present what
not to resent
so what I'd like to do is just pick away
of these entities that we were
displaying earlier and just have it show
our listing address great thing about
all our rapid turnaround tools is I
don't have to recompile I don't have to
do anything I just have to hit the
restart button in the assistant and boom
it updates interface and everything into
them all I have is my listing address
and exactly how I wanted it and I can
search on San Jose and boom there we go
and if you if you can notice we just
been in all these demos we've been using
just one eel model and we've published
to web service an HTML client and a Java
client so hopefully that shows you the
power of what we are tools give you
thank you do so this is often the way
I'll work myself I'll get in there go up
to some data source cold reverse
engineer it with the old model and then
i'll build a directed java client and
that way i can go in there and start
adding test data or going through and
chaining and browsing through the
sources and seeing what's there it's
just phenomenal does that aspect of it
alone is phenomenal for exploratory
programming where you're going to you
know work with some existing data assets
it's also great for building like a
little database administration tool it's
right out of the box and with the box
copy of web objects you buy the retail
box there's a couple manuals that come
with it one of them is a manual on
building the HTML applications and one
of them is a manual on building the
desktop java applications and i believe
that'll get you the hard copy but i
believe all that it's same information
is available in either HTML or PDF form
on our website there'll be a URL for
that to our reference library later okay
that's building it now we need to deploy
it because we want somebody else to use
it except just ourselves although I
could sometimes sit on my laptop and
just look at my beautiful application
but in the real world somebody else
should use them so we have two different
main ways of deploying webobjects
applications and we have our
own web objects deployment frameworks
and then we also have the ability of
deploying it in a j2ee container and you
can take the same application package
slightly different and you can deploy
either with our application frameworks
and Webster a web application server or
you can put it on a standard j2ee
application server in the case of the
standard j2ee application server we just
appear as a fat servlet so basically the
request response loop comes in it comes
in through the servlet handler the URL
gets transferred to us webobjects tough
test does what it would do and then the
results get passed up back upstream and
then you have access to things like jndi
variables and data data sources some of
the application servers that we support
our tomcat jboss IBM and the EAS
application servers so you can basically
take a web objects application and you
can you can actually have the developer
tools that you want but also live within
any kind of a deployment infrastructure
that you may need to live in now the web
objects deployment is a full-featured
cross-platform pure java application
server and this also comes in the box
comes along with everything that you
that you've seen and so it's got built
in clustering support so it does load
balancing its session management and it
does automatic application restart so
you get all those services in there as
well and then you also have some
configuration and some monitoring tools
that come come with it and this is not
like tiered pricing or anything like
that this is this is just the way that
the product comes you get all these
features so what you can do is you can
start very simply and get one box and
it's just a pure java application and
you can have your database the web
objects application and your web
browsers are all running on the same box
and then if you need to scale it up what
you can do is you can add more
webobjects instances on the same box so
you basically just run more processes
run more JVM since
more requests maybe you have another
data source then you can also scale you
see what people might do it they might
separate it and have their app their web
server on one machine their database
server another machine and then have
their application server on another
machine right so you might go with
multiple boxes and then you can actually
stack them up and then keep going so we
support a full clustered environment of
any expensive units you know and do the
scaling that way and it quite scalable
and we'll find out later so we have
objects in Apple how do we use it just
about any way that money can come into
Apple it comes in Java is involved and
some of that is simple things like the
point-of-sale systems if you go to our
retail stores or actually java apps
running on a Mac actually Java
applications but a lot of revenue comes
in through web objects we use it in
dozens of internal applications
everything from finding our paycheck I
think occation stuff we have it on some
some plus process management or
inventory management stuff we've got
bunches of different departments a bunch
of different people using it and it's
also used in all of our internet
offerings so it is used if you have a
dot mac account and you have the webmail
that is actually a web objects 52
application bending the HTML that's
actually going into the end of the mail
but a rather important application that
is using web objects is the itunes music
store the itunes music store you may
have heard of it is entirely webobjects
52 and it is running on Panther and is
running on exurbs and the actual music
data is on x-rayed we actually have one
of the people here who works on the
software there so maybe after the end of
this session you have some questions on
it you may be able to talk kit talk
about proprietary stuff but you can
probably talk about some of it it's a
really interesting design because in a
way it's kind of a web service
application and an interest
approach its using web objects entirely
on the backend for and then the client
is there's a Mac native client and we
just passed XML across the wire so it's
like an HTTP direct action and then the
response instead of being HTTP I mean
HTML is actually XML so it's a nice
example of being able to use Java on the
back end on the server where it was a
natural fit where people like to use
Java a way to have a very clean
responsive well integrated desktop
application use XML across the wire for
the data interchange and then we were
able to support the windows environment
with a different native application but
still talk to the same back end
application so it's a nice example of
design well besides being is an
outstanding outstanding store it is the
number one music store online music
store in the world and there's a URL
that should have an article talking just
a little bit of a kind of a high-level
overview of just what's involved I mean
the fact that it's xserve and X x-rayed
and all web objects now how do you get
webobjects there's a free trial version
so if you go to apple com web objects
there's a button there getting started
and it will basically tell you how to go
find our ADC online site and you need to
get an ABC online membership but that's
free and then you go to the download
section you can actually download a
trial copy of mac o of web objects for
mac OS 10 and it's a real full running
version it's got every feature that
you've seen here and you get out you
need to download a pretty day I'll
license key on but you can you download
it and try it if you're running Panther
which we hope you are the download
that's they are right now we haven't
updated it from the 52 version so you'll
want to hit the software update button
and get current to web objects 523 so
when you get to download you also want
to go through software update you also
want to update 2523 that that gaves it
basically the Panther integration so the
current version of web objects is 523 it
was recently a
a software update and that basically had
some performance and stability fixes and
it also qualified web objects for java
142 now all of this unit pricing us
anyway is 699 we also have special
education pricing at $99 and I don't
recall the government pricing but it's
around 300-400 somewhere in there and
I'm sure a apple wrapper somebody would
be very happy to give you that
information and that that includes both
a developer license and a deployment
license so you get basically one
developer seat and one deployment seat
and on that on the box again that's also
52 so you'll want to update via software
update and for more information the main
website to find out information on
weblogic is apple.com / web objects we
also include the runtimes the deployment
side on mac OS 10 server i think if you
get mac OS 10 server right now it's at
five to two is the one that's built in
and so you need to get an upgrade there
and that brings you to five to three and
then as a freebie we throw in a later
version of jboss and a later version of
tom cat in there as well it's in the
same it's in the same little application
download that's the I think the
application servers update on that and
with with xserve or with mac OS 10
server if you buy them the retail box
mac OS 10 server or if you buy an xserve
you get an unlimited web objects
deployment license so if you buy an
application and your target deployment
is going to be x server or if your OEM
in an application for xserve there's no
runtime cost associated with that at all
that's nice that saves that saves you
right there I'm also very pleased to
announce that the web objects training
materials have been updated so they've
been brought current with web objects 52
and they're now I've got classes
scheduled there's been a number of
tutorials that have been or many courses
that have been off here during this week
and the ones that were known as piwo one
is internet application development
using web objects that's the
introductory course
and then there's also the advanced
projects development course so that's
that's very good and you can find out
about that at trainable com hey web
objects community one of the really
exciting things about webobjects is very
vibrant community out there very active
very involved community and there are
lots of things beyond the web objects
things that you get in the box that you
have access to so what I'd like to do is
I'd like to highlight a few of those of
those things that have come from the
community that have actually enhanced
greatly enhanced the web objects product
in the web object to experience we begin
by saying sorry if I exclude anybody
there's like a large list of people out
there and there's a large number of
different places to find components for
web objects and information about web
objects you could probably just go to
let's see you probably did google web
objects and find a lot of those just
right off the top of Google but um hi
love you right here and one of the
things that is been asked about a lot is
the ability to cross-platform
development with web objects so what's
happy to introduce are the folks here
for lo project lo project is basically
an ant filled system now one of the
things that's really interesting aunt is
it's pretty much the java de facto
standard now for buildings any a one of
the main reasons is good is it gives you
ID independence so let me see a couple
things about IDEs just about any ide you
can want for java development is
available on the map and 2 i'm by now
i'm hoping everybody is aware that some
nice features have been added into Xcode
making it a better java ide namely
cochin at some ant integration in xcode
and if you'd like to see more about
using xcode four just plain old java
development there's a session tomorrow
morning at nine o'clock I think it's
just with Xcode and you can see some of
those features they
java code completion and some of the ant
integration so well Jack would be like
one of the places where that could tie
in is with the ant build system there
another thing that you've been hearing
about about at this conference is
eclipse and clips there is a pin that is
available that lets you do web objects
application development either on
Windows or on the Mac with eclipse and
so now you've got a full Eclipse plug-in
that goes in there without ide and
someone here from project wonder and
this is a collection of it's a vast
collection of a lot of freaks and tools
that kind of extend what you get with
web on so I would like to begin by
introducing undress chick from object
style for what the thing
[Music]
things might oh I don't know okay a
project is a phase vocs robot as we own
up there you this already you want a
quick which is aquatic scene and very
noticeable not every place is though the
one is the third build which keeps code
and actually that's what people people
is not now and we introducing another
deal system which is and we should which
is d step up and it's called wop so what
are there's plenty of reason what it Bob
just mentioned is cross-platform
development maybe it's not yeah this
audience but who develop Oh different
platforms Oh Maura men I told about you
you may want boy on for that on the open
forum or weird it so one of the very
important bits of project and and in
general platform for you to some o the
and enter design shoot and the draft to
write something needs and do the same
thing with the book issues feature needs
of a subclass know you is they contact
to
with except no real quick subject oh
please no limitations oh ok and degraded
with all thought is on it you get should
be under NIU's present is it on your
boob think that's very um maintain
people for top if you hold it up group
comes in wisco so sweet in those don't
think you don't have to do it and is all
but he really simple and separate
Richard steps and Sam and for prepare we
have a tap so here model and go and rise
up maybe enjoy your more so to break
cousin ah so this prick then there is a
task this is just like you have a seat
at oh yeah you know it can actually pork
your frame looking for a jar for inside
the frame working like it's gonna be so
it's either what not framework of with
scores point and it's like if with
application for the same thing you would
expect like apple pie
final little things that co-op it's
called or more no it's in some
environment okay database connection
front up that it is it your business
that we got rid of a project some too
soon there is what builders it's a zero
light so project file in windows at what
put information on Macintosh when you
need you still need to make it okay but
this time not central to just like if
you don't have to think about and for
the with PB that's in the it quick
file-based some patterns is the same to
compile your application it's the same
would be in that file o Queen task
ridiculous project yep yes all the pay
you this before and just be a code index
trip to opera see it hasn't been and you
can do the same and finally a project so
they're out in the community site is a
flash wall project may it please ask
questions thank you thank you very much
now or a copter it up well the Eclipse
plug-in that makes it go
thank you but public and the project
lead of the volunteer here to talk to
give you a few good text you too so go
put it full of be and I think again
bugging to take it it lets the full fee
he contains playing state of VR Eddie
like an expert with code navigation
debugging up more the hump em bring
victory over Jade you have to see just
finished just another in for your
education but since we have ready a good
tip you can concentrate and roll it if
the Foley f willips to create an Asian
from the components and llamada we have
an author and commit murder
and five fundamental couple click and we
live or put and for deployment what a
medela included no just double-click the
component awesome finding global but its
object okay kid up reactive to the
argument session handle and on the
current bake element or change value of
area even probable multipack occasion 20
different lity team turn around soon it
all find more information about the
clips and putting home page the film
which covers installation of Olives ish
mitigate its lips and system to provide
feedback and since about Willis getting
this link to the track benzema home page
here for con so if you have any
questions Eddie thank you for thank you
all right I think that one from you this
is really cool hot geez itself pleased
with the work we've been annexed cope it
is a new solution and that's some of the
end in action so you'll fought the Xcode
experience it better and better for
committed to making that you know we
mean that forward be ide and so one of
the people expanding get into the land
of fact book building these incremental
compulsory compose
and combination things here it's pretty
phenomenal also like to introduce max
Miller for a project wonder this is a
whole world but if it can be added in it
[Applause]
hello my name is macular currently I'm
one of the lead engineers for the itunes
music store but also one of the founders
of so I'm see project 12 or Natalie with
the death of a duck a number of
Engineers reaction no baffle and we we
built a number of frame specializing in
rapid application development so 12 as
well as just a number of nice extension
to EOS and foundation of all face
framework and a lot of defined in in the
full frame works themselves because
they're kind of special names that you
don't really seem off but so we we
seated the framework supra sinner and
since then he's kind of embraced too
yeah also contributes a code oh here we
later with frameworks that yeah
approaching old and have grown and we
started with like five project 22
projects now
it's mainly just nice lection points a
lot of Tours projects everything from
SVG narration angio just committed in
Excel generations have actually wool
components that represent a bunch of
Excel sheets and people's hope but it's
still using web app builder and kind of
build excels Excel spreadsheets but
integrated in with your with all the
back in so it's just a bunch of kind of
nice works written by others who you
know know a lot about this and so it
also serves as a very nice Prince point
for well how would I actually get it say
a template parser if I wanted to change
of a wad binding or you know kind of
some arcane knowledge like that and it
serves as a good reference point so
so here few highlights of some of the
stuff that's found that kind of some of
the frameworks project wonder so one of
the nice things is we have a very
international group on project wonder so
they've added in kind of automatic
locals and supports all the Japanese
encoding is taking place and all of the
all the it kind of adds support for all
the the other encoding is that you'd
want and automatic localization on the
way in and out often times you have to
worry about making sure that you're
parsing him you know the headers for the
languages and kind of getting that
correct on the way in the way out so
there's been a lot of work done to that
as well as localization down into the
validation messages to pop up when you
know you forgot to put this into your
model kind of thing so another focus has
been kind of the rapid application
development process and kind of taking
that one step further so the
configuration management tools have have
really helped in the sense that you know
you can now reload all of your all of
your property files automatically you
can turn sequel debugging on and off so
I'm you can even change we use log4j
throughout the project so you can even
go in and actually change the log4j
patterns that you attract printing out
on the log statements and had been being
one of the people who has to go in and
track down a bunch of really strange
behavior that goes on its music store
being able to go in and get a back trace
and all of a sudden one on some very
strange occurring log and being able to
look in the log files and see that start
to come up and exactly what's triggering
it as well as say the entire will
request with all the valley request
values is incredibly helpful so it's
been it's a definitely saved saved me
some time you know examples of building
custom qualifiers and if you're you know
the database independence is nice but
sometimes you really need to use who's
an end statement or or a sub select
statement or one it's one of the more
advanced you some of the more advanced
sequel qualifiers so there's a number of
number of custom qualifiers there that
if you're interested in and learning how
to ride one of those and they offer
support
for that what else so within the
director web stuff there's probably
about two years of very advanced
development that's gone on around then
you know kind of an overhaul of a lot of
the rural caching systems there's over
200 200 more components that that are
useful for doing all sorts of crazy
direct webs ain't in the context of the
rapid application development so there's
a whole wealth of things there and yeah
i mean just i'm just really it's just a
lot of within the base frame works
there's just a lot of really nice
reusable components it shows how to do
you know fun stuff with the HTML some
stuff with javascript pretty much kind
of all the things that you think of when
you're when you're developing but these
are you know again kind of specialty
components that yeah you don't into
every day or need every day so with
actually announcing today is on the
Wonder 20 spent a long time coming and
so I've been stuck in the one dotto
branch forever and you know getting sick
of maintaining maintaining that branch
so now we're jumping to the two da bo
branch so wonder is it has a clip
support using were lips thank you very
much and will project so the whole thing
built with ant and works out of the box
with eclipse we're finally getting Xcode
support in we've been driving or
dragging our feet on that one but most
projects should have xcode projects now
as well so we're at wondered
sourceforge.net we have a fairly active
CBS CBS list as well as an active
discussion list so check us out
[Applause]
I'll take that too Thanks thank you
thank you very much max so that gives
you some highlights of the you know all
the different things that are out there
that are beyond just what Apple does
with web objects so to send feedback or
contact us there's web objects at apple
com and that goes to more than just me
there's other people who see that as
well that's a good way to give feedback
another think it's very important if you
find reproducible bugs than definitely
file bugs and hopefully can provide
detailed information or test cases or
something like that that's always really
helpful and for more information there's
the apple com webobjects site there's
also the web object reference library
which is available and you can either
just go through develop a radical calm
and just hit reference library and look
for web objects or here's the specific
URL and this the reference library has
been updated and contains a wealth of
stuff it's got you know it's got an easy
way to find everything from reference
api's to documentation to text notes to
Q&A so it's all like easily navigable
from one place