WWDC2001 Session 616

Transcript

Kind: captions
Language: en
good morning ladies and gentlemen
Bob said it really well at this early
morning everybody's taking really useful
polls so I will have to do the same who
would not be up at this very hour if it
wasn't for this presentation thank you I
hope you have muffins orange juice and
all the other goodies that are handing
out for free so at least it's free food
I'm Stan German and I will be joined in
a minute by Tom Naughton who will be
giving the demos for this presentation
what's in this beautiful talk because
it's so early we try to put many demos
in there so that you don't quite fall
asleep we'll be discussing the new
features in web objects 5 and the web
objects tool integration we've had
presentations on web objects builder
before we had other sessions talking
about iya modeler so we'll not address
those in too much of a depth we will be
talking about the project builder
assistance at this point you're probably
realizing this session should have been
earlier and I don't mean like at 7
o'clock
I mean Tuesday because you've seen all
those assistants since but we will talk
more about them we'll be discussing the
project structure which has changed
quite dramatically since web objects 4.5
or even the prior versions we'll be
talking about rapid turnaround mode
that's the nifty thing that you don't
have to compile the product and it still
works we'll explain to you how it works
or why it works and why it sometimes
doesn't work we'll be discussing the CVS
integration on examples of web objects
we'll be talking about the installation
of a built product and we'll be
discussing or just briefly touching
custom pallets in web objects builder
project builder assistance now you've
all seen them you've seen probably all
of them and you've seen probably only
one kind the project assistants the
project decisions are those that help
you set up a new project file assistants
are assistants that help you with an
existing project to add more and
more stuff to them as I said project
assistants help with new project
creation they build a fully functional
compiled able application skeletons for
you from scratch and they add resources
based on what frameworks we choose what
model files you choose etc what's new in
well objects five for those of you who
have been using with objects for a while
now you can add multiple yo model files
to a project right away which is really
helpful because then the formalin
wizards now assistance go with you
through the whole process of reverse
engineering and you can get consistency
errors if you have only one model in the
project you can also add frameworks
which again allows you to structure your
product nicely and have your models in
there and of course the new features of
a o UF cocoa applications and all the
new Java stuff the file assistance once
you have a functional product project
excuse me then those assistants are used
to add new things to your project Java
classes nicely ten nice templates with
names and everything filled in web
components they get already a little bit
trickier and Java client nibs that's the
trickiest part so that's done all for
you and Tom now will come on stage and
we'll show you something about the
assistance
okay so as Stan mentioned you've
probably all seen the assistance by now
but let's just consider this a
comprehensive review so this is of
course the the assistant panel and
project builder the web objects
assistants are all at the bottom I just
like to go through and explain what each
of these is in case we haven't covered
them all consistently the first is the
cocoa AOF application this is the
replacement for using AOF in cocoa
applications it basically just copies
the standard Java cocoa project template
adds our frameworks and guides you
through creating a nib much like direct
Java client if you as you seen and the
next two Java client direct to Java
client 10 direct to web basically just
ask you to choose a model direct to web
asks you to choose an appearance for the
application
but it just builds and runs the
application and you customize all the
features at runtime
display group application I'm going to
use in a minute you've seen it many
times it creates a full component with a
pre-configured display group which is a
kind of a Swiss Army knife controller
object that manages a set of AOS for
display the next two are basically just
a template copying assistants they just
they copy the the standard basic web
objects application and web objects
framework projects and just customize
them with the name that you add so I'm
going to go through and do the display
group application because I basically
need an application to do the rest of
the demos with so we give it a name
and this panel is actually one of the
new features in web objects 5 previous
versions of the wizard would just let
you choose one model and that made it
difficult if you had frameworks
containing models or if you had multiple
models with cross model relationships so
this actually makes a lot easier to do
things that you couldn't do before I'm
going to add a business logic framework
and you can see in the next panel that
that framework contains two models I
could also add additional models and as
long as they don't have conflicting
entity names I could I could use that
entire model group for the rest of the
wizard next we choose the main entity
for the main component I'm always gonna
go with movie let's see there are
various options for the layout that you
want for example you can just have you
know a big list of all the attributes
that you choose or you can have a list
of Yeo's represented by the attribute
that you choose and then clicking on it
will display more detail below that you
can edit and use to create new EOS I'm
just going to go with let's see the list
of EOS and
what I just explained anyway okay so we
need some attributes and I'm just gonna
show off that you can select multiple
attributes and add them all at once I
think I want you to do that and then I
need to choose an attribute to use for
the hyperlink in the list of the EOS and
I just click on finish okay so basically
you've seen this type of project number
of times before it's created this
component with a pre-configured display
group as you've seen before
let's see but since this is the
assistant demo I'd also like to show you
some of the file assistants which I
don't think people have been showing
another demos so again the web objects
assistants are down at the bottom of the
screen you'll notice that there's a Java
class assistant here and another one up
here under cocoa and the basic
difference is the template has different
import statements so if you want to
import the the cocoa framework so you
would choose this one if you want to
import the web objects framework so you
would use this one we're just going to
create a new component oh and actually
this reminds me one important thing in
the when you use the project builder
assistance is you have to choose the
group that you want to add the component
to or it'll just add it wherever the
selection is so we're gonna just create
a new plain old vanilla component we get
a list of the targets many of the
assistants don't give you a list of
targets they just know which target
things go in and choose it for you but
since this is a built-in project builder
template copying wizard we have to
choose the target we're gonna cover
targets a little bit later but the
important thing here is that you pretty
much never want to add things to the
main target and you want to add all your
components to the application server
target so go ahead and do that and we
have this configured to open the Java
file you'll see that it's added that
with the other components so the other
way to create new components is to use
the Builder
and when you save the component if you
save it in the project directory which
it'll try to do by default it'll ask if
you want to add the component of the
project let's say yes it asks if you
want to create the Java file you pretty
much always do and that'll also just
stick the new component into the project
so you can either use Wahb or use one of
the wizards I'm just gonna build this so
that we can do the the next demo but
there's really no no need to run it
you've seen it many times no Stan
all right I'll just sit here stay with
us all right
don't run away so back to the slides if
we can go yes Tom pointed out initially
in the assistance the cocoa EOF
application I'll repeat after me that's
in Java let's go into the next topic the
project structure we saw tom talk about
targets buckets and we will also touch a
little bit of mystery files which was
selected as the last file on the
previous demo screen now what is a
target target is something new for at
least the legacy web objects developers
it's a notion that comes over from old
Mac OS it allows you for a file to be
part of multiple different you can have
a file being ok it's it's complicated
you see I mean I work with it and I can
don't know how to explain it a file can
be part of multiple targets and the
target describes word that file when
it's once built or copied in the
finished product where it will be so in
a typical deployment scenario for web
objects we have an application server
then somewhere we have a web server
sometimes it's the same machine but
typically it's not there's a firewall
they forgot the fire the server's
connect through that firewall to all the
clients so we see that in the typical
scenario we have the app server and the
web server
apart and usually it's maybe even more
computers the webserver target which is
part of any web of web objects project
you put static stuff there stuff that
that just doesn't change things that the
web server has to fetch from disk and
that's it static images static HTML
client-side Java classes because they
just get downloaded to the client over
the network Java client nib file same
thing and anything that gets accessed
through normal URLs now here because
this is so late in the week you'll even
know that what normal URLs are it's this
non so fancy or not so ugly looking
thing then to complement that we have
the application server target this one
is used for all the dynamic content
server-side Java classes web components
that would be what tom was creating web
objects builder yo models these are also
dynamic they're considered dynamic and
also they're used by the application of
by the web server and images generated
on the fly an example of an image
generated on the fly is you have already
hopefully visited the Apple I tools with
the I cards and send a nice cute little
postcards to your mom and dad this is an
example of a picture generated on the
fly warning if you don't know what
you're doing don't touch them don't mess
with them don't rename them the targets
they are there depend on their names and
don't modify them Tom will show later
when he's giving the demo about targets
what you really shouldn't touch there's
a lot of settings and if you really
don't know what you're doing just please
stay away buckets
what buckets in previous versions of web
objects we had this old project builder
now known as project builder whoa except
on Windows where it's snail known as the
project builder that old project will
require you to place things into buckets
you had a cute little bucket for your
java files another one for you
resources another one for the web
components now you can put stuff
wherever you want it's really nice
because it allows you to structure
things just as Tom showed in the
previous demo a component it had the
class and the world file and everything
else together in a in a little group you
can also put stuff anywhere in the file
system the problem with that is when you
move your file you can put it in a
completely unrelated directory and it
will find it it will build it just fine
the problem with that is if you copy
your project you have to keep track
yourself manually that that file is
somewhere completely else so it has pros
and cons our assistants when you create
something when you create a new project
when you add files to an existing
project it will place it immediately
inappropriately bucket and whatnot well
not bucket group group those buckets
mystery files some of you may be
wondered what are some of those files
that are there let's delete them they
just take space and nobody really uses
them it doesn't complain when they're
gone to mystery files the rule file
display group definitions
you've probably heard what a display
group is it does a lot of nice nifty
stuff for you connects things for
display etc that is defined in the wool
file you delete that file oops not good
component encoding even if you don't use
display groups many very especially
advanced users I guess are not using the
display group so much but you might be
interested in your data coming into the
browser with the proper encoding you're
talking to a Japanese client it comes in
letting characters not so good so this
is all stored in the component encoding
section of the loop on the second
mystery file we got new icons by the way
it's the API file this API file is an
XML format following the new great
standards that we are following it's
used during development
only it tells webobjects builder what
are illegal and what are illegal
bindings so it won't allow you to make a
connection that requires an array to
something that's a flat thing etc and if
you delete that oh well it will live
it's used during development only and
then your the build project you don't
have to have it there now as I promised
another demo Tom will talk about targets
okay so first I wanted to open up some
of these groups so you can see the
default project organization and again
these groups are basically just a
figment of project builders imagination
it doesn't correspond to the layout on
disk it's just a convenient mechanism
for you to organize your project one
catch though is that our wizards our
assistants the assistants have preferred
groups that they like to put things in
so that you know to make it easy when
you create a new component you know gee
where do you put it my project you know
I put it in web components let's see so
we have classes go up here we have the
group with the web components each
component is in its own group if you
don't like that you can you know just
completely rearrange that you could put
them all in one group or you know each
violin and in another group if you want
resources let's see whoops that's doing
basically you would put your your
application resources the one that goes
the ones that go on the application
server side generally go in there the
web server resources are gifts and
things that Stan mentioned that need to
be copied to the web server interfaces
is the location where it would put nib
files for Java client or Co Co Co F
client frameworks bucket of course
contains frameworks and one interesting
bucket is the the built product bucket
and it's actually a convenient way for
you to go and look at the structure of
the bundle that was built for your
application for example if you have a
burning desire to see the windows launch
script you can just drill right down
into it without having
use the finder or terminal that's at the
very end you know it's just before they
workout don't show it yeah I was just
sort of showing that you know this is
where it appears in the project but
we're not going to discuss the project
structure until later as was mentioned
by Stan let's see so I also wanted to
show you the the targets there are two
different ways of looking at targets to
me the most convenient one is in this
view there's a pop-up that shows all the
targets and when you choose a target it
puts a little donut next to the file
that is in that target if you want to
add a file to a target you just turn on
the donut to remove it you turn it off
so you can see here that all the classes
all the components all the frameworks
and even the web server resources will
be in the application server target and
looking at the web server you'll see
that it's basically just the web server
resources the the gifts and some
frameworks so basically these gifts will
be copied both to your web server and to
the application server you probably
won't always need to have the gifts in
the application server side but if you
dynamically create images it's
convenient to have a copy of them there
so that you can access them that's sort
of up to you the frameworks are included
in both targets so that your Java
classes can have access to any of these
frameworks I think that basically
basically covers a targets and project
structure Stan oh yeah I'm still here oh
oh wait no I'm sorry oh there's there's
another way in he's also one of those
people who should have raised the hand
or even being up at this time I looked
at my script and you notice that there's
another way to look at targets you can
click on the targets tab and it lists
the three targets and what's important
to note here is that the application of
web server targets are both sub targets
of the main project target and so the
the whole reason the main target exists
is just to build the other two targets
you never put anything in there it's
just sort of a convenience so you
wouldn't have to build the two targets
independently when I click on the target
wise people shouldn't touch him show the
scary stuff now this stop sign
yes when you click on these targets you
get another view of the target that
shows you all the files that's in them
you could drag and drop files from the
finder into these buckets as another way
of adding files to targets and down here
there are there are scripts and various
settings that you probably wouldn't want
to mess with you know such as these are
some build settings for the targets if
you really know what you're doing you
might want to mess with some of the flag
sent to the Java compiler but chances
are you wouldn't want to mess with that
most of these things
so basically targets are there for you
to you add and remove resources and
vials too but unless you really know
what you're doing you should probably
just you know leave them alone and not
create you on targets in and certainly
not rename them all right sounds sounds
lovely and when we go back to the slides
I'll rewind a few that's why I was not
paying attention for recap to targets
the web server target static stuff one
of the examples Tom movement has
mentioned that you can put a file into
more than one bucket
excuse me target static image might be
an example or an image in general for
the static version that just gets
download to your client and maybe your
application will want to do something
with it be creative with it again
my favorite example those eye cards when
you first come to the selection if I
want this picture on that picture on
that picture it's a static image it's
just showing them to you it no it's not
doing anything with them however later
when you actually start typing text and
it shows you a preview of that slide
that card it became a dynamic image so
it has to be on the application server
as well application server there is no
need to put a neo model to both targets
because web server won't know what to do
with it but some resources also chop
java classes they might be used to put
them into both a Java class might have
some business logic that's used by the
application server but it's also used by
the Java client and everything for the
Java client has to be
webserver resource and again as tom said
you saw that really really crafty page
with ten thousand settings which very
few people understand don't mess with it
and now beautiful animations i mean
could not have done it any better and
let's go to the rapid turnaround mode
the rapid turnaround won't we all have
seen and we love it so much and how does
it work why does it work why does it
sometimes not work first what does they
do for you it improves the development
time you don't have to go through the
whole build cycle usually you change
your resource you change something fancy
you just press refresh on the page it
looks different so that's nice no need
to perform a full split install remember
the beautiful firewall picture app
server web server two computers nasty
you really don't want to do it each time
when you build your project this one
allows you to not even rebuild the
project forget about a split install
split is so choice to be discussed later
allows tweaking of HTML files and images
you don't even have to have a web server
everything is done on disk i like
traffic signs not necessarily toes but
project builder needs to be running
while you are in rapid turnaround mode
so you can for instance just have web
objects builder running tweak some
components press refresh and expect
something to happen it's not going to
happen
that's because web objects framework and
the web objects builder are talking in
the background with project builder to
find the resources there is this really
fancy thing thank you tom the
abstraction layer that abstracts
communication between all our tools to
have objects tools and the proper austin
development tools as i said it used to
be that through this whole bucket thing
everything had to live in one directory
and so we could find all the resources
where we wanted them because they were
in this little directory now you can
have resources spread out on the network
anywhere in the
all system so we have to find them only
project Buller knows where all the
resources are because it's running it
knows it has the project loaded so when
we ask it
hey where's the component bla it tells
us right here and we can find it so it's
really important that you have this that
you remember to have project builder
running because otherwise rapid turnout
will not work and back to our chief demo
demo okay so now I'm gonna run this
application which I see has built
successfully actually didn't I recommend
okay when I build you have to make sure
you're on the main target otherwise your
execution button one highlight and
actually as Stan said there there are
two pieces to rapid turnaround one is
your web objects application talks to
project builder the other is Wahb talks
to project builder and that's actually
two different code paths and there are
some subtle cases where they behave
slightly differently one example would
be if you edit a Neal model Anil modeler
and save it
WOB will notice the changes and they'll
show up in your variables browser but
the running application won't refresh
the you model so you have to relaunch
yeah you don't have to rebuild your
application but you do have to relaunch
it and sort of the way it works
internally is the the web object
framework basically treats project
builder as your application bundle it
doesn't even look in the built bundle it
just talks to project builder whenever
it's looking for a resource so basically
if you add a resource it'll always find
it without the need to rebuild so oK
we've run the application and I've got
this component let's see and the way
it's working is it's actually pointing
to the very same file that you're
editing in the Builder so if you
change your component then hit refresh
in the browser not home refresh it'll
update right away and also if you drag
in a gif and I believe I have some some
graphics on this machine somewhere
there we go we'll drag in a moose to
beautify our application let's see if I
can have a project builder showing the
background so that you can watch it put
the gift where it goes
okay finder we have a high resolution
but didn't get it now see this is been
just kind of in the way there we go now
you can see now we still can see the
project there so here's the project
you're the resources we're gonna drag in
the moose it offers to add it to the
application and you can see it's stuffed
it in the bucket it's updated in Wahb we
now have that a moose yeah there's a
moose in there I know that guy behind
the tree it's it's hiding I mean you
know we're sorry we're save the
component switch back to Explorer hit
refresh and the moose instantly appears
thank you so basically for for things
like adding resources as long as you
don't change code in theory you
shouldn't have to rebuild your
application and that's the really should
go by when things don't seem to be
working as you expect you probably just
need to relaunch chances are you don't
have to rebuild unless you've added code
no Tom you just added an image which
targeted get at it - I see the Moose in
the outline view there but you don't
want to touch from the target so it
should have added it to the web server
resources and you can see by the donut
that it has and that's something WOB
just chose to edit to the web server and
it goes by the name of the target so it
has a project builder you know give me
the web server target and if you don't
have one named webserver then it'll just
add it to the project but won't add it
to a target so if you did change the
target names the tools wouldn't work as
well but it would still add things to
the project right so at this point you
could also now choose manually - if we
stay with this to add it also to the app
server target sure I could just switch
every switch there you see the donut
isn't there just click on it if this
were say your eye cards page and you
wanted to do both static display and
also dynam
it doesn't hurt even if you don't need
it that way but you know if you're not
sure where to go just put it to both its
gonna waste a little bit of disk space
but the end okay hundred gig drives
today what is it just peanuts so this
cameras opinions mm-hmm the price of
convenience that is usually like that
it's like electricity in California DS
that's right anyway so thanks Tom yep
let's go back
lovely slides so much for rapid
turnaround serious integration in
project builder I don't know if you've
been to the project builder sessions we
scheduled the web objects track so that
you can always go to the project builder
sessions there was always nice gaps they
could have been used for lunch and other
breaks but project builder was the
thought this was discussed there what a
CVS will show you in our session briefly
how it really works well with web
objects as well what can you do for you
on OS 10 and what is it what is CBS
concurrent versioning system it's open
source which is great these days it's
not owned by a single gigantic company
who wants to own everything it comes
pre-installed with the developer version
of OS 10 so we kind of know it's there
we can rely on its presence and on its
feature set its cross-platform so even
if you're developing on the platform
that's owned by one big corporation you
still can use CVS and we do support that
it's command line only ouch don't say
that in the Macintosh community it's
very powerful but also very very CVS
tends to get crufty I mean I read the
main main pages more often than I would
like to but we use it internally so it's
got to be good and at least the
integration is really good because all
the tools are built to work with CVS
how does project builder help you with
CVS there is this SCM menu which stands
for source management court controls as
sourcing
it's something source control it shows
you what at this time of day I don't
know even my name it shows you where you
added and deleted files that's one of
the tricky things you know you're in
command line you add a file there you
add it to the make file or what have you
and you build the project it's just
great you do a CVS commit next day you
check it out and it's not working
because you forgot to add it project
builder does that for you it supports
the deletion of simple files as well as
wrappers you know file wrappers those
really nice things that are a dot whoa
or dot yo model D they show up like a
little file but if you don't know about
it you add it nothing got added because
it's actually directory so it works
recursively and it allows remote C it
supports remote CVS servers with
security so that's an add-on bonus you
don't have to have your CVS repository
somewhere on the file system on the
network excuse me and have everybody see
it or not it supports authentication Tom
hey you should have been in the first
slide like name you're doing most of the
work here show us
okay so project builder has all kinds of
support for viewing differences in your
CVS repository but they haven't added
something to allow you to check out a
project so you still have to do that on
the command line
let's see so CVS checkout seal for short
and we've created a CVS repository on
this machine so that's checked out the
think movies project we can open that
with the command line - since we're
already here
oh that terminal does strange things
when you have a large font sometimes
ok so now we're going to modify one of
these components and show you the
interactions with CVS so go ahead and
open that in WOB and let's say we wanted
to add a key
and that inaction
say they want to go back to project
builder and actually you have to save
the file before it actually checks with
CVS and you can see it's put a little m
over here to show us that we've modified
that file so as you go on working you'll
notice M's appearing next to files that
you've modified you can quickly look and
see which ones have changed then after
you've edited for a while you'd probably
want to go and see how it compares to
the file that you originally started
with so you can go up here to the SCM
menu and say compare with base and that
opens up both the original file and the
modified file in file merge so it makes
it very easy to go through and review
your dips which is something that we do
before we check in our code let's see so
Tom this is you know I can do that in
command line my big problem with CVS is
renaming files how many of you have
tried and failed to rename a file in CVS
directories all this good stuff you see
but Tom do you have an answer for that
we sure do Stan it's the right answer
okay yeah in general to rename a file in
CVS you have to remove the file and then
add it and of course you can't remove
the file unless you delete it so you
have to delete it rename it at it and
remove it to just rename the file in the
right order of course in the right order
of course but in project builder you can
just do a get info on the file and
you'll notice that it has this is a list
of all the CVS commit logs with useful
information about all the changes that
the engineer has made on this project
and you change the name you just type in
a new name and it warns me that time
changing the name
uh-huh and and actually over here you'll
notice that it's marked the old file for
removal and has created a new file that
it's marked for addition which is a big
improvement over what we did before
which would you know look something like
this before we check in we want to
review our diffs
basically you know shows you stuff like
this if I'm in the right directory but
anyway that was the old way
now there's the new way so when we're
all done we want to check in our project
you can either select an individual file
and go over to commit changes or you can
choose the root of the project and
commit all the changes what you can also
do actually as you can select a sub
group several groups of groups like that
when you're renaming a file you have to
select both files or you just have to
select a super group of that because
otherwise it will check in the new file
but it will not remove the old one so
your rename process will be just as
usual incomplete okay so you're prompted
for your helpful and informative commit
message
Thomas famous for his really descriptive
comments in CVS and all the em czars and
A's have gone away and seems to have
left an M up here for an inexplicable
reason okay so you just put a comment in
that file can I get at it in some way to
see later what you think it is actually
I believe I demonstrated that earlier
Stan you can bring it the information
panel I mean you have to check on
because you never know what he's doing
and in the information panel it gives
you a list of all of the helpful and
informative commit messages well thank
you now I know how to keep an eye on you
alright alright so far so good
now let's get to the really nasty stuff
it's all that nasty it's just demo is
not so pretty
installation of of objects applications
we will now discuss build styles split
installs and somewhat the content of a
finished build product project build
styles we have touched the targets
that's only half of the whole issue in
project but we also have different build
styles
build styles define different compiler
settings in general during different
kinds of build it's used by web objects
- these describe different parts worried
should go web server app server as well
together with the targets there's three
build styles there's the one for the
development that's the one that you
using when you using the turnaround when
you're just debugging your app and still
working on it
and there's the deployment one that you
would use to actually finally deploy the
application and there's the third the
web server which is kind of confusing
it's used to build the product for the
web server so I didn't make this table
but it sure looks nice things to install
there is many different kinds of
resources that are part of a project
there's the apps or resources components
you models etc that's the left column
then we have the three clones for the
three different targets during develop
builds that excuse me during development
when we're using rapid turnaround
everything gets built into the builds
directory you're building your compiling
you can specify project builder where
all your build intermediate products
will be placed usually in a local
directory so the filesystem isn't so
busy but when we actually go to develop
and deploy when we go to deploy an
application we
want to have the finished product built
somewhere else in the application server
installation directory that's where the
application eventually will live that's
so good so so far so good by the web
server resources they're on a different
server remember that slide where the web
server was kind of behind the firewall
and the app server was behind the
firewall and they were not really the
same computer necessarily if that's the
case you have to invoke the web server
build style as well so that the web
server resources actually get copied
onto the web server itself so that's the
one big difference when you're in
development remember use the development
build style everything will be just
ducky when you ready to deploy
you have to invoke both the deployment
and the web server build style to get it
done
the second somewhat not quite optimal
thing yet in project builder you cannot
invoke the install step from the IDE you
have to do it in terminal so you have to
open terminal and type in PBX build
install - build style and then one of
the to build styles either deployment or
web server and you have to do both and
then that's true equal slash usually you
don't want the files the build target to
live in temp which is where the finished
product will be placed because you
reboot the Machine and you know where
temp went so you want to have it live in
slash so that everything gets properly
expanded and is really persistent
however you might want to omit the best
your equal slash in case that your
actual server is not your development
machine which often k oftentimes is the
case so you can leave it there
everything will be nicely installed in
temp and then you can use the tarp
program of your choice to just tore the
whole thing up and move it to your what
do I know Solaris server split installs
once again require both the deployment
and web server build style to be invoked
so that the files get in the proper
directories
if you aren't doing a split install if
you have one machine that does it
everything for you you don't have to do
that the deployment is sufficient okay
now we build it now what's in there
web objects 5 as its predecessors but
world objects 5 more so than before
it's cross-platform because it's Java
which brings some really nice problems
with it the line scripts you've been
here all week now and you see that red
things grow by in project builder each
time when somebody launches an
application it's no longer just a single
word to launch an app you actually need
more to be done because you need to tell
the Java VM things etc so in the OS 10
and UNIX for the OS 10 a UNIX case there
is the launch scripts they live in the
main wrapper and then also incontinence
- slash Mac OS app name that's a little
script it's the same script for both
UNIX and Mac OS 10 probably because Mike
OS can use UNIX for Windows deployment
there is the windows deployment script
which also lives in the main wrapper and
it's called app name dot CMD and it also
lives in the proper contents directory
those two copies are identical but they
are used to be used on Windows then
there is the classpath file that one is
used to for all the information for the
java vm you know what kind of were to
find the other classes were to kind of
find the frameworks when you use project
builder this is all created for you
automatically you don't have to worry
about anything and those class pass
files are automatically passed as
arguments by the launch scripts but just
in case you want to mess with it that's
where they are
during the content slash and individual
directories depending on platform and
here we see there is a one for Mac OS
there's one for UNIX and there's one for
Windows because your Solaris machine has
most likely somewhat different Java VM
or different libraries than your Mac
os10 machine
then for java client we've had many nice
and powerful demos of the chavacano and
director Java client technologies it's
all really nice and good when you don't
know how to launch the application it's
a problem many people don't know there's
actually a script to do that it's in the
main app wrapper in contents and there
is the app name little script that
actually launches the Java client and
everything is once again done for you
and then there's some other stuff in the
app wrapper that whoaa
there is all kinds of resources again we
have the application server resources
and we have the web server resources so
there's two directories to distinguish
those on an application server when you
have a split installer there is an app
server and there's a web server those
directories will be will have very
different contents if it's one on the
same machine it's gonna be one of the
same you have enough of this alright the
last part of today's presentation will
be the custom walk palettes and the good
news is this is the only slide for that
topic it's the good news for me
because then I can retire what our web
palette swap house excuse me this is one
of those other new features in web
objects builder for with objects 5 you
can customize palettes in WAP it's very
easy now it's just drag-and-drop like it
should be and you can use it to store
components or useable components so for
instance if you are a developer
freelance person and you want to reuse
your components for many different
clients you just create a palette and
tracks drop stuff from it if you're a
company who wants to share one on the
same look and feel of components across
many different products you do the same
you create a new palette and then you
can use the same components over and
over in all of your apps to assure the
same look and feel so for the lost tom
tom show us
so here we are at the last demo so the
pallets have you know basically two
broad uses one is kind of as a scrapbook
for frequently used bits of HTML that
you don't want to type over and over
another is as an extension mechanism for
the Builder so you can't really add if
you write your own framework with your
own elements you can't add to the
toolbar you can add them to this menu
but you can make a palette that has your
custom elements and that makes it an
easy way for you to extend the Builder
for example we had an engineer put
together a smile framework which is
synchronized multimedia instruction
language we and it comes with a set of
components that you can drag into your
your component so it's just sort of he
made the framework and wants to make it
easy for people to use so you make the
palette and then they can see it right
there and just drag the elements in so
it's very convenient for this what's
gonna happen dragon elements like that
in there even though you don't know what
what it is these it just looks like a
generic container oh what's that oh yeah
and it's gonna want to add the the
corresponding framework for the or smile
and I I don't want to do that with this
demo right now I'm not sure what that
does exactly but they just look like you
know generic containers that you could
drag other elements into and apparently
when you use this you would hide them
inside of an embed tag and then the
QuickTime plug-in will find the XML and
execute the instructions and you could
do a very busy demo which we're not
going to do but it was nice that it
suggested that we add the framework and
it would have done it all for us and it
said anything any frameworks at least
that the elements you dragon require I
will go ahead and automatically add for
you that's the whole wizardry behind it
it's why it's now called assistance yes
that's why
okay so we're gonna create a new palette
and actually a lot of this code has been
reworked for this release you can drag
and drop and it actually saves a little
image of the HTML that you've dragged
and you can resize that to your heart's
content at this point I think the
feature request would be to make it
proportional resizing kind of looks
proportional Shift key yes that's that
but then again you should know what to
drag during the first place so let's see
okay so now I wanted to show you a
custom element that we've added and
we're going to drag into our application
so we'll put it somewhere under the
mousse get rid of the muth it's shedding
you don't like the most yeah well do you
want to put it on the ballot later we
could put the mousse on the ballot
should we choose
okay so we're dragging in a custom
search panel and it's going to require
its own framework which has some of the
gif resources that it requires so we
drag that in and we wire it up so just
play group after moving everything out
of the way
okay so let's see so I just play group
we want to search on movie title
so we bind that to the search field and
when you click search we want it to
requalified a to the data source action
save that build
this is the riskiest part of all the
demos
we launched the application oops
when I forgot one step but that's okay
because I can fix it using mousse is
gone that's the power of rapid
turnaround I was supposed to paste all
of this stuff into here
there we go so we've added a search
panel and an aqua look and feel to our
component all by just dragging and that
concludes the pallet demo doesn't hum
you did really well in all four demos
even though you wouldn't be up even at
this time well this kind of brings us to
and then I think the whole presentation
is like five minutes too short because I
guess I forgot half of this stuff to
summarize in short project builder is
the core of web objects live development
pretty much everything revolves around
it it's in constant communication with
all of other web object specific tools
you have to use different build targets
for different parts of your project for
different files as I said images are the
most likely candidate to be one or the
other sometimes even both otherwise it's
more clear-cut components they're always
appserver static stuff is pretty much
always web server and different build
styles to finally deploy your your
project it's in the last part when
you're really done with it when you want
to go to final testing you have to
invoke those build styles on the command
line because currently there is no
support for that from the IDE and also
you have to explicitly name both build
styles deployment and web server we are
worried that that probably could be
optimized in the next release at this
point I would like to invite you the web
objects lab that closes in a few hours
and of course do vote for web objects is
the coolest web server because that it
is absolutely excuse me and the road map
is kind of short since there's no that
much time left in this week we have web
object security then we have optimizing
web objects applications that's a pretty
interesting talk as well and I think you
will want to voice feedback in the
feedback session who to contact my boss
Tony she's at web objects that at
apple.com
so it's Bob Fraser who is our marketing
person
you