Enterprise IT • 59:34
WebObjects is Apple's Java-based web application development platform. Learn about new features and get a glimpse at product directions in upcoming releases of WebObjects.
Speaker: Daryl Lee
Unlisted on Apple Developer site
Transcript
This transcript was generated using Whisper, it has known transcription errors. We are working on an improved version.
...to talk about today, and I'd just like to get a show of hands just to see who has been attending what and what kind of level of WebObjects knowledge we have out there. So if you could raise your hand if you attended the Xcode keynote yesterday. Great. All right.
So everybody's interested in finding out the latest great Xcode information. So how many of you out there are newbies and haven't used WebObjects at all or even touched it? Wow. Okay. So we have a lot of newbies out there. Great. So we'll definitely have a little information for you later in the presentation to hopefully get you up to speed.
How many of you have used WebObjects for about five years or less. Less, yeah. How about you grizzled veterans have been using WebObjects when it was in Objective-C or used WebScript or something like that? Wow. Okay. So I think we have a good selection in the audience here, and hopefully we can have enough information for everybody today.
So what I'd like to start off with is just give an overview of the WebObjects technology and what kind of bits and tools and frameworks are in it. And then a little later, I'll move on to more recent events, what we've been doing and what we plan to do in the future. And then we'll move on to talking about some other stuff like documentation and other training materials and support stuff that you can get a hold of.
So the first thing I'd like to talk about are various rumors that were floating around on the net coming up to the conference. Especially, you know, a lot of people like to speculate about what the next version of WebObjects will have in there. And so a lot of you guys think we don't read the Apple mailing list, but we do. And a lot of times we're very amused by your posts.
I recently saw a roadmap posted for the next version of WebObjects, and someone satirically did a takeoff on our Direct-to-Star technologies. And so for those of you who do not know what Direct-to-Star is, we use that to refer to our rapid prototyping technologies and ways to build applications within five minutes.
So someone did a takeoff on that, and they posted one of the features as Direct-to-Brain. I'm not sure what that means, except maybe we have cortical implants. Maybe it'll code your app directly to disk and deploy it or something. I don't know, but I can safely say that that is not a feature in the next version of WebObjects.
direct to newest OS release was another thing someone wanted. Well, we just released WebObjects 5.2.4 for Tiger, so I think we're doing a pretty good job in this area, but we could probably try to do a little better. Direct to programming language. Hey, we just announced an Intel compiler for Fortran. Why don't we move WebObjects to Fortran? How about that? How many Python users out there? Maybe we'll move to Python. I can safely say that WebObjects is staying in Java and that is our platform of choice and our programming language of choice.
Direct-to-Customer Buzzword. Our marketing guys love this, and they would love for us to have some kind of bot out there that screen scrapes all the IT world or e-weekly magazine and grabs the latest, greatest buzzwords, and somehow we get that into the product. But somehow I don't think that will be a feature, but we try our best as far as keeping up with the latest stuff. And I think this is where most of these features are going to end up, which is directly on the mailing list. And it's fun to speculate what we're doing, but I think that's most of these features are going to end up there.
So what is in the next version of WebObjects? I'd like to kind of play off that theme and kind of throw out a few phrases myself. Direct to customers. So that somehow we're going to get WebObjects in the hands of more people. Direct to your wallet. So Apple is going to be putting money in your pocket, whether you know it or not.
and direct-to-developer tools. So what I'd like to do is just leave you guys gnawing on those phrases. I might, throughout the presentation, drop a few Easter eggs here and there as far as what's in the next WebObjects release, but what I'd like to do is move on and talk about, in general, what is in the WebObjects technology, what's in our bundle, and what you can do with our tools.
So what is WebObjects? It's a collection of tools and frameworks that allow you to build Java application servers and web services very easily. Within the bundle, we have an Xcode IDE that is our IDE of choice, and that's where you'll begin building your projects and compiling your code and manipulating your data.
[Transcript missing]
And we have web services built underneath everything and a bunch of tools that allow you to build web services very easily. And we have a HTML page layout application called WebObjects Builder. And so we'll dive in a little deeper in a few more minutes.
So a lot of you guys are familiar with a lot of Java technologies, I'm sure, and the J2E specifications, and there's a whole laundry list of technologies under that umbrella, and how does WebObjects kind of fit into this? And I kind of like to visualize it this way, that WebObjects kind of wraps a lot of these technologies, and either we make it easier to access those technologies, or we provide equivalent technology that you can accomplish the same thing. And then we also integrate well with some of these other things, like Java mail and such, and you can bolt that functionality onto your application.
So why do we think WebObjects is cool? We have very graphical tools that allow you to access the powerful frameworks that we have. And really, our frameworks have a lot of best practices or a lot of code that you can reuse or leverage to your advantage, and that helps you build your apps a lot faster. We also scale very well. WebObjects was architected to be an enterprise application -- enterprise-level application server, and there are quite a number of examples of WebObjects deployments that have scaled to huge heights, including, like, our iTunes Music Store.
So where is WebObjects used? We've seen a lot of people in our core markets using WebObjects, places like digital and print media, asset management. So I've seen an app recently that helped people edit video and then annotate it and log it and put it into a workflow for people to edit and produce their videos. And it's really cool. So we've seen some interesting apps in that area. We've also seen people in higher education building portal sites or student information systems. And that's definitely a core market for Apple. We're very interested in our higher ed customers.
In the scientific and technical community, we've seen various biotech companies building apps off of WebObjects. And of course, us being Apple and this being an Apple technology, we want to eat our own dog food, and we really do eat our own dog food. So as an Apple employee, I can't go a day without interacting with a WebObjects application internally.
So as far as accessing my latest pay stub or making my HR elections or just checking bugs over RadarWeb, you're accessing a WebObjects application. But we didn't stop there. We have based our core business and some of our most important business off of WebObjects. So places like the Apple online store, we do hundreds of millions of dollars of business. It's a 24/7 operation. And it's scaled very well and it's international.
In .Mac, we have a number of tool sets like our web mail and iCards applications that are also in WebObjects. And of course, the million-pound gorilla is the iTunes Music Store. And we sell millions and millions of songs a year. I think Steve said we're closing in on, you know, half a billion pretty soon. And, you know, this is the gold standard of music stores, digital music stores in the industry. And this is all based off of WebObjects. And if there's any question whether WebObjects can scale, you just have to point at the Music Store.
So let's talk about the architecture really quickly. As you can see from the graph, it's very much a three-tiered application server architecture. So you have your data access layer, and then you have in the middle tier your app layer, or where you put all your business logic, and then you have a presentation layer, or where your clients are accessing your application from. Another thing to note is that there's a real clean separation of function in this diagram, and we really try to use the model view controller design pattern and stick to that concept within our designs.
So what's development workflow look like? So usually you guys have a data source that you'd like to access, something that's relational database usually. And we allow you to access any JDBC 2.0 compliant database that has a JDBC driver available. So things like Oracle, Sybase, MySQL, they're all accessible as long as you have those drivers.
We also allow you to access through J&DI various directory services. So things like OpenLDAP are accessible. And what you'd start off with is actually using our EOModeler application and you'd model your data or you'd blast a model onto your data source. The next thing you would do is go into Xcode, build using some of our default templates, build an application, start customizing it, adding your custom Java business logic.
And then after that, that's a jumping off point to building other applications like web-based applications and using tools like our WebObjects builder. But it doesn't stop there. You can use those same components and start building web services. And again, you can use similar -- the same components and build Java desktop applications.
So when I say same components, I'm saying that after building a model and building some of your custom app logic, you can jump off and build all kinds of different views or presentation layers for your application and your business. And that's a powerful concept. We'll talk about that a little bit later, but it helps you build your business a lot faster.
So everyone has data they need to access what goes on in our runtime. What I like to think WebObjects in particular, our EO Enterprise objects framework insulates you from really having to write any SQL or JDBC specific code to a data source. We'll do all the heavy lifting for you.
And all you're really doing is you'll need to specify a model file that describes your tables and how they'll map to objects within our frameworks. And the typical workflow is that our runtime realizes it needs to access or fetch data from the database or update or insert data. It'll go into access the model file that specifies that data.
It'll move on and create a query for you to access your data or commit your data to the data source. And then if you're fetching data in, it will actually convert that data into Enterprise objects. And these objects are very generic objects. And what that means is in those objects you don't care about what's backing in the data store. So you don't have any database-specific information in there. And let me just elaborate on that concept a little bit more.
For instance, if you had a model that pointed to an Oracle data source and then you had a model that pointed to a MySQL data source and you had one that pointed to an OpenLDAP data source, when you need to access that information into the runtime, all those rows are converted into objects. And you don't care where those objects came from. You just manipulate them through their getter and setter. You just manipulate them through their getter and setter methods. And you don't care what's in the back end. We do all the lifting for you.
So to start off in building your model, you would fire up our EOModeler application. And we have wizards that help you reverse engineer your database if you already have legacy data. So we will discover all the tables, all the columns and relationships within your database. Or you can go over and generate a schema design yourself in your model and then blast that onto your data source. After you're done with that, we have some templates, Java template files that get you started in customizing your code and adding business logic to your objects.
So let me show you a screenshot of Yield Modeler. Hey, that doesn't look like the Yield Modeler that you guys are used to. Maybe this is what you're used to. So here's a glimpse of maybe something that's coming in the future. So this is a version that we shipped in the WebOx 5.2.
We can go back to that, but we'll go there. So like I said, this is a very visual tool. And you can see how tables are represented, and we call those EO entities. And those are the big rectangles right there. And then within those tables or entities, there are attributes. And those attributes usually represent columns in your database.
And then you can see number of relationships between these entities or tables. And there are two one relationships and too many relationships. So that's a quick look at what EO Modeler is about. We'll discuss this a little bit later in the presentation, but hopefully that gives you a flavor of what EO Modeler is.
Okay, so back to our development workflow. We have just finished our model. We think we have our schema the way we want it, and we have just asked EOModeler to build our business logic code and give us a template. We had fired up our Xcode IDE and create a project and add all that stuff into the project.
And then we'd start prototyping our application. And this is a very powerful concept that most other systems like J2E or other development systems, you're spending a lot of time in the design process, making sure your schema is the way you want it to. Then you've got to code a lot of your business logic into the app. And then finally, you get to building your presentation layer. And this could be months down the line before you're actually able to show a client or a client. Or to show how your app might look or prototype your app.
And what we think is we have a better way of doing things. And so once you've modeled your data and you've got your business logic, we have rapid prototyping tools that within minutes you can access your data, manipulate your data, and then you can begin to refine your business logic.
So you can get feedback right away whether your data source or your data is modeled correctly or the way you want it. You can get feedback right away. And then you can refine your business logic. So instead of spending months down the line in your development cycle, you're getting right within minutes access to your data and you're working on that.
Another powerful thing is that since we provide some default templates, you're able to customize the way your data is presented right away. And we have very powerful tools to make reusable components that you can embed. And what that allows you to do is build your interface a lot faster.
And so in the end, you end up with a very polished application in a fraction of an amount of time. So hopefully you'll dig it a little bit deeper into our rapid development tools and our tool set and find out how fast you can actually develop your apps. So let's go back to our development workflow and talk about building web applications.
So WebObjects Builder is a very graphical HTML editor. And within there, you're going to define how your data binds to your interface objects, or how it will be presented within the HTML. We provide you with a bunch of reusable components in a pallet that you can drag and drop into the interface and then bind up and use. There are also quite a number of open source projects that you can leverage information from or their components from, and things like Project Wonder have been really good for the community. So I encourage you to check that out.
So one important distinction about using WebObjects, our HTML templates, or what we call WoW components, is that we're really isolating a lot of the logic and not embedding that into the HTML layer. And actually, none of this is embedded in the page. And that's a differentiation factor with technologies like JSP, where you're actually a lot of times putting your business logic or your data source information into your JSP code.
Another thing that's great and where WebObjects has an advantage is that we do all the session management for you and we build sessions for you and unique sessions to users. You do not need to rebuild the widget, the whole machine. We'll take care of all that for you. So it's very powerful and hopefully you guys will realize how that is beneficial.
WebObjects can generate both HTML and XML code within our components, so it's very flexible. We have interop with other J2E technologies, JSP. If you want to use JSP technologies or if that's part of your requirements, it's certainly easy to add that to your raw HTML code or create WebObjects components that embed JSP code.
If you need internationalization, it's easy to add localized bundles to your Wo components. And let me give you a preview of what WebObjects Builder looks like. Well, wait a second. Now, this is what you guys are used to. Or is it this one? Okay, so maybe this gives you an idea of something you might see in the future, but this is what we shipped on WebObjects 5.2. And as you can see in the toolbar, there are quite a number of elements that you can add. It's very graphical, and it's very easy to bind these components to your data. And we'll get back to this a little later.
So getting back to our development workflow, we can take our same model that we built earlier, we can use the same business logic and all our customizations for our business code, and then we can start building a web service. So we're reusing these components to build a web service.
What are web services? They're a very standard way or a standard protocol for communicating between various clients and servers. And it's kind of delivering on the promise or has a lot of the same kind of buzz around it that Corba had a number of years ago, interoperability between various systems.
So you can conceivably have an Apple script server in the back end and maybe a .NET client in the front end or on the client side consuming your web service. And it's added a whole new level of interoperability between different systems. So we think there's a whole class of new programmers out there that are learning how to build these web services and learning this kind of coding to these protocols. And we're happy to be able to add some of that functionality into the WebObjects project.
So if I want to build a web service on the server side, the first thing I would do is fire up our web services assistant. And what that does is allow you to graphically, without writing a line of code, actually configure a web service and then actually test it.
So you're leveraging a lot of things in our rapid prototyping tools to get to that point. And it's conceivable where you don't have to ever type a line of XML or SOAP or WSDL and you can publish a web service. So we keep you out of all the implementation details. And let me just give you an idea of how a web service might be configured. So if you look at the graphic, we have a real estate service defined. And under that, we have a search operation defined, if you look on the left-hand side.
[Transcript missing]
So web services are built into the 10 platform and they're very integrated in there and there are all kinds of clients you can build. If you leverage the WS make stubs tool utility, you can build stubs for C or C++ or Objective-C apps and that can be your front end.
You can also use AppleScript or Automator to be a client and access web services that way. And of course with Tiger, the coolest kind of web service client is the WebObjects. Daryl Lee So Web services are built into the 10 platform and they're very integrated in there and there are all kinds of clients you can build.
If you leverage the WS make stubs for C or C++ or Objective-C apps and that can be your front end. You can also use AppleScript or Automator to be a client and access web services that way. And of course with Tiger, the coolest kind of web service client is the WebObjects.
Within WebObjects, we have various APIs that allow you to consume web services on the net. So things like if you want to connect to a service that you found on X methods, it would be easy to define that service and then suck that data into your application and then publish it through your app. So that's web services in a nutshell. Let me talk really quickly about how to build Java desktop applications.
So if you decide to leverage our rapid prototyping tools, you can build a desktop application really quickly. And I think these are great for building intranet applications or admin applications where you need to access your data and manipulate your data really quickly. And our direct-to-Java client assistant allows you to customize how your desktop app and how the data is presented to you.
And if you want to go into further, deeper, or customize your app even more, we have tools that you can use like Interface Builder to build custom widgets for swing widgets that you can embed into your Java client apps. We have Java Web Start integration and we use JNLP files that allow you to upload or define what classes to upload to your client and help you version those classes that are on your client so that you can dynamically upload the latest, greatest bits to your client machines. And so that's really powerful.
So those are Java desktop applications, and I encourage you to look at them. So after you've built your latest, greatest app and you're ready to deploy, we have a couple of different options for deploying WebObjects applications. You can deploy in a J2E container, or you can use our traditional WebObjects tools. Neither one is better or worse. It just depends on your requirements.
If for some reason you need to deploy in a J2E container like JBoss, we have JBoss and Tomcat on Tiger Server, you can build a .war bundle. And .war bundles are the standard way of building web applications and deploying web applications within J2E containers. And all you need to do is build that bundle and then drop that into the deploy directory and then start using the configuration and monitoring tools for that J2E. So that's a great way to get your application server to get your application up and running.
Now, we also have our WebObjects deployment tools that are also on Tiger Server, and those are also part of the default install. We have built-in clustering support for them, and there are a number of load-balancing algorithms that you get to choose from. We provide all the session management facilities and automatic restarting of app instances for you. And there's a whole lot of other configuration options I can't get into right now, but it's very powerful tools. We also have monitoring tools that allow you to remotely administer and configure your applications, and I encourage you to check out Java Monitor.
So we encourage you to buy XSERVs. They're our platform and hardware deployment platform of choice. We have unlimited deployment licenses on every XSERV. WebObjects deployment becomes with every install, so does JBoss and Tomcat and any other deployment environment you might want to deploy with.
[Transcript missing]
So we released WebObjects 5.2.4 maybe about five or six weeks ago, and that was with the Tiger release. And it's really about a compatibility release with Tiger. It's supported on the Java 1.4.2 JVM.
[Transcript missing]
Okay, so that's WebObjects 5.24. Let me get back to-- My phrases I threw out there earlier. So direct to customers, direct to your wallet, and direct to developer tools.
Any ideas what that means? Or anybody got any feedback on that? What they might think that is? Well, I think I was trumped yesterday by the keynote, but-- Let me introduce WebObjects 5.3 for the Xcode 2.1 developer tools. And that is WebObjects 5.3 is going to be on every DVD that you guys have gotten today or this week.
I encourage you to install them. They're an optional install. And we're really excited about this because WebObjects has just gotten more available to the rest of the developer community. And we think it's a pretty exciting development. And I would just stay tuned for more information on that. We also have a WebObjects 5.3 software update that's in the works. It's not ready today, but look for it in the upcoming weeks and check your software updaters for that.
So WebObjects 5.3, what is in it? So we've introduced an Xcode ELModeler plugin, and we really looked at what was going on with core data modeling last year, and we thought we could bring that functionality to modeling ELModels. We also updated WebObjects Builder. We gave it a little bit of a facelift and did some stuff under the hood.
A lot of feedback we got last year after talking with you guys is that we need to do something about our HTML and XHTML compatibility. So we've tried our best to support the latest standards. We also looked at our Java Collection Classes support, and we've added Collection Classes support into Java Foundation Classes.
We've updated our web services to improve interoperability with various other clients. And we've also added formal qualification for Oracle 10G within our WebObjects product. So let's dive in a little bit. So Xcode EOModeler plugin. So last year we looked at the cool integration features or the core data modeling tool.
We thought that, hey, this is great technology, and we need to somehow bring that to EOF. And so we took a stab at it, and we think we've come up with a pretty good core data modeler. And hopefully you guys will like it. We're intending on improving this modeling tool, and we'd love to get feedback on if it suits your needs.
So this is the old EOModeler plugin, or EOModeler application. And here is the new EOModeler plugin. And it looks very much more integrated into the Xcode IDE. And hopefully, it'll help improve your workflow within applications. So without further ado, I'd like to invite Jonathan Wrench up here, and he's going to give us a demo of the Xcode EOModeler plugin and give us a tour.
Thank you, Daryl. Hi, I'm Jonathan Wolf-Wrench, and I'd like to introduce you to the Xcode 2.1 EOModeler plugin. Okay, I'm on screen. That's going to open up a simple project here, pretty much empty, except for the WebObjects EO Model D document that comes with the WebObjects distribution. It's just a little movie sample here that illustrates interrelationships and some data model we all can wrap our heads around. So I'll double-click it.
First thing you'll notice is that instead of opening up EO Modeler in a separate process, we are opening up the model directly inside of Xcode. So you can use this to view and edit your model right inside of Xcode. I want to point out the four main views here. On the top left corner, you have the Entity View. This is the view that lists all the entities in your model. Then, in the middle top here, is the Properties View. This is where it lists your entity's attributes and relationships.
And finally, in the top right corner here of the top views is your Detail view. This changes to detail whatever you've selected.
[Transcript missing]
And the other thing you'll notice is as I click on entities here, that these top views are updating. And it's both for entities and for individual attributes and relationships I click on, which is a great way to navigate your complex entity diagram. So let me get -- Thank you.
We are pretty now. I like to draw a little bit more detail--draw your attention to the detail view. This is segmented control, so there's a couple of layers here. The first layer thing that looks like a little EO here in the side of the document, that lists the object side of your EO. So things like what--in this case, we've selected an attribute, so what value class is your attribute? Is it a string? Is it a Java number? What is it? Can it be null? These type of object side of--object side details of your entity.
Then on the little thing that looks like a database cylinder here of the same attribute is the details for the persistence side of your entity. So in this case, we're still selecting the attribute. So how does this attribute, what column does it map onto in your database? And what type of column is that? Is it integer or string or whatever? So same thing when you select a relationship.
So when you select a relationship, the detail on the EO side would be, is it a 2-1? Is it a 2-many relationship? What's the destination it goes to? On the database side, what happens when you delete a set of related EOs? What's your delete rule there? And what type of joint semantic does this relationship map onto? And what does it represent? So these are the things that you can set in the new Xcode 2.1 EO Modeler plugin. And that's it. Back to slides. Thank you, Daryl.
Thank you, Jonathan, and hopefully this is a new wave of -- a new generation of modeling, EO models, and I think this is going to be very cool, and I think it adds just another integration point for WebObjects within Xcode and makes your life a lot easier. Okay, so can we go back to slides? So what other things have we been working on? HTML.
So last year, I got a lot of feedback that quite a number of you were running post processing on our HTML that we were creating just because we were doing things that were not up to the recent specs. Or we're not doing things that were compatible with XHTML. Or even CSS. We were mentioning people's CSS.
So we really wanted to address this and work on compatibility. So we looked at our tools and frameworks and did what we could to bring it up to the 4.01 specification for HTML. We also did some work where we're not munching CSS and we fixed known issues with our XHTML compatibility story. So things like double quoting attributes or properly closing some WebObjects tags we addressed.
So one area that we definitely focused on was WebObjects Builder and making sure that we were doing the right thing in WebObjects Builder. And we built in HTML 4.0.1 support into all our components that we create into our WebObjects tags. And we also did what we could as far as making our WebObjects tags HTML compliant within WebObjects Builder.
We did give WebObjects Builder a facelift, so we thought we could reorganize the toolbar and various other elements and streamline your workflow within the application. And then we also added a new preview mode. So we've based it off of WebKit and the WebKit view, so what that gives you is a better approximation. It can now do CSS. It can do JavaScript and run all that stuff in the preview mode before.
Before, we just couldn't display it or just would not dynamically emulate your JavaScript. So this is what the old WebObjects builder looked like, and it was quite busy and definitely didn't look like a tiger application. It actually harkens from the OpenStep era of applications, and there's a very busy toolbar, and we thought we could do better.
And here is the new WebObjects Builder. And as you can see, we took a look at the toolbar, and we may have simplified it and hopefully concentrated on various modes that you guys are more apt to be working in. So instead of having me talk about all this, I think I'll invite Jonathan up, and we'll do a demo of the new WebObjects Builder, and he'll give us a tour. So if we could go to the demo machine.
Thank you, Daryl. I'm going to open up a simple little project here that contains an empty main.roa. Fire up the new WebObjects 5.3. I'm sorry, WebObjects Builder 5.3. And let's hide that. There we go. So this is the new WebObjects builder. First thing you'll notice is that it has a more streamlined interface. This is now a standard Cocoa toolbar.
It is, you know, instead of the small little, you know, set of open, tiny little icons all over the place, we've replaced that with a standard Cocoa toolbar widget so you get things like customization now to put those elements that you use every day and rearrange things to match your brain. The previous pop-up mode pop-up button has been replaced with a segmented control that makes it more obvious what mode you're currently in, and it's easier to hit.
Um, in this--this elements pop-up toolbar item is where-- that lists all your static elements. So things, uh--so in this case, I've set a heading to h1 here. So let's put a little sample text here. Under the WebObjects toolbar item is another pop-up that lists your dynamic elements. I could put things like a repetition here.
We've freshened the interface in a number of other places too, instead of just the main window, in addition to the main window. The inspector has been slightly refreshed. Preferences have also been refreshed. And the palette has also been freshened. So the palette's a great way to drag reusable components into your WebOps application and just drop them in and start using them right away.
Darryl Lee: But beyond the interface tweaks that we've added to this release, the big news is that now we're using WebKit to render the preview. WebKit is the same engine used by Safari. So this allows a richer preview of how your component is going to look on a real browser.
So things like XHTML, CSS, JavaScript, they just work. And to prove that to you, I'm going to do something that -- I'm going to load a page that's fairly rich that uses CSS, uses JavaScript, and that's Apple's main web page. I'm going to grab the source code from that. Copy it and paste it into WebObjects Builder and move to preview. Now, if you used to do this on the previous WebObjects Builder, well, you're braver than I am. And you'll notice it just works.
Even the hot news headline here, the JavaScript ticker here, is firing like it should. So this is a much higher fidelity previewing experience for you to work on your components and get up to speed and make them right before you even get to the browser. Back to slides. Thank you, Daryl.
So thank you, Jonathan, and hopefully that gives you guys a taste of what is in the new WebObjects builder. And we're pretty excited about that, and I encourage you to try it out and give it a test drive. So other things we've been working on. So I can't remember how many years I've heard of that people want Java collection classes interfaces implemented within Java Foundation, and in particular, NSArray, NSDictionary, and NSSet.
So as of today, in WebObjects 5.3, we have implemented those interfaces within NSArray, NSDictionary, and NSSet. And they implement the list, map, and set interfaces. So we'd love to get feedback and find out what kind of needs you guys have. Hopefully, this gives you better interoperability with other Java packages and allows you to exchange our Java collection classes, Java Foundation collection classes with other packages. And we'd love to get feedback on anything else that you'd like for us to add into our frameworks.
So web services. WebObjects 5.2 shipped with Axis 1.0 as its underlying engine. And so we looked at it and we said, you know, we need to make some improvements in this area. So we looked for the latest GM release of Axis and Axis 1.1 is the latest. So we've embedded that into WebObjects 5.3.
And we're hopeful that that gives you a better level of interop with other services and gives you more performance. So I'd like to invite Jonathan up here. And we thought we'd show a little web service integration between WebObjects and Dashboard. So Jonathan, why don't you come up here? Jonathan Allen: Thank you, Darryl. Let's close up this previous demo.
I'm opening up a small little project here I wrote and it's started running. So dashboard widgets are those HTML pages with JavaScript logic. And it turns out that WebObjects is a great HTML environment. Furthermore, dashboard widgets, when they want to communicate with the outside world, they use web services. And guess what? WebObjects is a great web services server and client. So they really go together well. And so I whipped up this demo to show you how a dashboard widget can talk to a WebObjects back end.
And here I'm playing off the -- you guys -- how many guys have seen the WWC trading cards? There was this little thing here that someone took the front page of the WWC developer promotion, and they took the various engineers and said, "Wait a minute. Those almost look like trading cards." So they whipped up a set of trading cards for the various Apple engineers. So this dashboard widget allows you to maintain and categorize your trading cards. So if you want to get all your information on Bertrand. Or if you want to, you know, what's going on with Spotlight? Who should I talk to? Maybe I should talk to Jan there.
So this is a dashboard widget that's talking to a web services application, which is a WebObjects application. So as I type here, it starts narrowing down what I could be talking about. So let me tell you what's going on behind the scenes. This is an NS Search Field Enhanced. Remember, dashboard widgets are thus HTML. So this is HTML interface you're looking at here.
In order to get the look and the interaction of the search field here, is that this is an NS Search Field Enhanced input text box element. And what it is, is tied to a JavaScript method. And every time I type in another character, a JavaScript method is fired. That JavaScript method takes what I've typed into the query box, turns it into a HTTP request, throws it over to my WebObjects application. My WebObjects application takes that request with the query string and puts it into a fetch specification. And at that point, my WebObjects application is done.
The WebObjects framework picks up the fetch specification, dynamically generates database-specific SQL and hands it over to an open database. Open base looks at the query, turns it into a bunch of SQL rows, hands it back to the WebObjects framework. The WebObjects framework takes these SQL rows, turns them into objects for me, and hands them to my application. At this point, my application just has these objects that happen to match the query. And all my application does at that point is turn those -- serialize those objects into XML.
And without any code, we're able to do that. Then the XML is thrown back to the widget in the HTTP response. The widget, now back in JavaScript, takes the -- the HTML response, and then it takes the SQL response, and then the XML breaks it apart and uses that information to manipulate the DOM to update our HTML user interface. And that happens with each keystroke. So if you're interested in core image or maybe you're interested in core video, who do I talk to for this? Oh, if it helps, I spell video right.
And, or maybe, you know, Core Data is kind of cool, too. So, who's that? Ted. So, that's Dashboard Widget, using web services to talk to a WebObjects application that's database-backed. Web services are how widgets talk to the outside world, and WebObjects makes web services easy. Thank you. Thank you.
So, thank you, Jonathan. So, dashboard widgets are really cool and WebObjects is cool and hopefully you guys can create some cool widgets that access your applications data. So, hopefully that gives you some ideas of what you can do with WebObjects and Dashboard. So here's the WebObjects 5.3 compatibility matrix. I'm not going to go into all the details here, but we're going to be posting that online, and you can check out all the latest, greatest support for that.
So that's WebObjects 5.3. We're pretty excited about it. We're happy to be on the developer tools and shipping with Xcode 2.1. Look for us in the future to ship WebObjects releases through the developer tools. We've posted our compatibility online, and you can check out all that information, or you can absolutely drop by our WebObjects lab and ask us more questions about that.
WebObjects 5.3 is available now. So you have it in your hands and we've shipped it at the conference. It's also available through ADC download and I encourage you to go grab it. WebObjects 5.3 for Tiger Server will be shipping soon, so look for that in the upcoming weeks.
So that's WebObjects 5.3. What are we looking for forward into the future and what are we going to do? So being part of the developer tools release, we're obviously going to integrate tighter with the Xcode IDE and we're going to look for new ways of improving workflow through our tool chain.
We're going to look forward to improving the EO Modeler plugin and making that more usable. We'd love to get feedback from you guys for the latest, greatest features that you'd like to see in there. WebObjects Builder. We are looking for new ways of improving workflows through that and improving experience, seeing if we can leverage WebKit more and various other components.
Further down the line, we're going to look into our deployment story and monitoring story. And it's been difficult in the past to get all the information you guys needed out of our frameworks at deployment time, and we want to assist you guys as far as instrumenting your applications in your deployment environment and providing more information and feedback on what's going on within your deployment environment.
Whenever Java 1.5 becomes the default JVM on client and server, we will look into supporting and fully qualifying WebObjects on that JVM. There's lots of things to look forward to in the next year, and hopefully next year at WDC we'll have lots of good things to show you. We're very happy about that. So I'd like to invite Katherine Wentz up, and she'll talk to us a little bit about WebObjects documentation.
Hi, I'm Catherine Wentz. I'm the Technical Publications Manager for WebObjects. And this morning I'd like to talk to you about a couple of things. I'd like to talk to you about the documentation that we have available today for WebObjects 5.3 and what you'll be seeing in coming months. On the website today at the ADC Reference Library, we have the WebObjects 5.3 release notes.
And that explains new features, resolved issues, known issues in their workarounds, and that's available today. Let's see, we have the WebObjects 5.3 reference in Java doc format. We have the WebObjects 5.3 update, which explains the API differences between WebObjects 5.2.4 and 5.2.5. 3. Now those of you who go to the ADC Reference Library on a regular basis know that we update the documents there monthly. So in the coming months you'll see some changes.
We'll be revising some existing documents to reflect new WebObjects 5.3 functionality. We'll be retitling and recategorizing some documents. And we'll also be replacing some outdated documents. Project Builder screenshots will become Xcode screenshots and books such as, yes, Project Builder for WebObjects, they'll be going away. All the Xcode specific information for WebObjects will be in the Xcode documentation set. So some specific titles you'll be seeing in the coming months. You'll see a new Getting Started with Web Applications. That will have an updated learning path to reflect the new titles and categories.
We'll also be making some other changes. We'll be taking larger existing documents and breaking them down into shorter, more cohesive documents. So a chapter that's currently a tutorial in one of the large books, it'll become a separate tutorial. A chapter that explains how to use a tool, it'll become a separate user guide. And a chapter that introduces technology will become an overview. So in the coming months, look out for a new WebObjects overview, a new WebObjects Web Applications Programming Guide, and new WebObjects tutorials.
How many of you have been to the ADC Reference Library recently and seen the new documentation feedback form at the bottom of each page and used it to send feedback? Oh, good. I have a captive audience. I can tell about something new. It's called the Did This Document Help You? And it's a quick and easy way to provide documentation feedback directly to tech pubs. You can give us feedback in one of three ways. Yes, it was helpful. Tell us how it helped.
It was helpful, but maybe you found a typo. Maybe there was a mistake in the sample code. Maybe, you know, you just needed some additional information. So tell us more about that. And then, no, it wasn't helpful. So tell us what would have helped. I strongly encourage you to use this new documentation feature. It's a great way to get feedback back to us. In closing, you now know more about the WebObjects 5.3 documentation.
We've covered the documentation set, both present and future. And now you all know about this Did This Document Help You? feature. Thanks for your time. I'll be available throughout the week at the conference to answer any questions. I'll also be at the WebObjects feedback session. And thanks for your time again. Back to you, Darryl. Thank you, Kathleen.
So lots of good things coming up with WebObjects documentation and lots of different books that are going to be refreshed. So we'll have the latest and greatest information for you. So we have a whole bunch of other WebObjects sessions that you guys can attend this week and especially today we have a number of sessions later on this afternoon. We have a WebObjects tool session and I would encourage a lot of you newbies to come to that session and get an idea of how all our tool chain interacts together and get more hands-on with our tools.
Immediately following that we have a WebObjects deployment session and how to deploy into J2E containers and so that would be another good session for you guys to explore if you haven't gone through the deployment process with WebObjects. We have a lab on Wednesday morning, so I encourage you to attend that and give us, bring any questions or bring your code and show it to us and hopefully we can help you out with any problems you have.
Later on in the week, I think it's on Friday, we have a WebObjects performance and optimization session. And I would definitely encourage all of you to go to that. We'll have a number of iTunes music store engineers here, and they're going to share all kinds of war stories and best design practices, et cetera, on designing your WebObjects applications. And then later that day, we have a WebObjects feedback forum, and I can tell that a number of you guys are going to be showing up there. Thank you.
So another thing to point out is that we have training available for you. If you log on to training.apple.com, there are a couple WebObjects classes. I believe the curriculum was refreshed last year. And so look into the internet application development using WebObjects and advanced WebObjects development classes. And I hear they're great. So who to contact? Send some email to [email protected] and hopefully we can respond to any of your questions and get any information you need to.