Configure player

Close

WWDC Index does not host video files

If you have access to video files, you can configure a URL pattern to be used in a video player.

URL pattern

preview

Use any of these variables in your URL pattern, the pattern is stored in your browsers' local storage.

$id
ID of session: wwdc2003-602
$eventId
ID of event: wwdc2003
$eventContentId
ID of session without event part: 602
$eventShortId
Shortened ID of event: wwdc03
$year
Year of session: 2003
$extension
Extension of original filename: mov
$filenameAlmostEvery
Filename from "(Almost) Every..." gist: ...

WWDC03 • Session 602

WebObjects State of the Union

Enterprise IT • 33:47

This session provides an overview and a roadmap for the WebObjects sessions in this year's WWDC. You will also get a peek into what's coming for WebObjects technologies. Meet the key players and discover what Apple has planned for WebObjects in the year ahead.

Speaker: Wiley Hodges

Unlisted on Apple Developer site

Transcript

This transcript was generated using Whisper, it may have transcription errors.

Thank you. I need my clicker, don't I? Aha. I'm very pleased to be here this morning. I will say first of all I want to apologize for Mr. Bob Frazer who is the senior product manager for WebObjects. He decided foolishly to plan a vacation in Costa Rica well after the Worldwide Developer Conference so that he would not miss anything important.

So Bob's in Costa Rica this week. And I'm very pleased to come here and talk to you about the state of the union with WebObjects. As some of you may have heard me say in the developer technology track overview yesterday, I've been back at Apple now for about 12 weeks or actually about 11 weeks. This is my 12th week back. And in my previous life at Apple, actually, I dealt extensively with WebObjects. In fact, I was one of the product managers for WebObjects at Next back in 1996. So I want to tell you today, first of all, some things that you're going to learn from this session. We have a WebObjects overview, which basically talks about what is WebObjects, what can you do with WebObjects. We're going to talk about the direction for the WebObjects product. And we're going to also bring up Katherine Wenc to talk about the documentation state of the union.

First, the overview of WebObjects. For those of you who are not familiar with WebObjects, it is really the easiest way to build J2EE-compatible solutions. And for those of you who are familiar with WebObjects, this is still the easiest way to build J2EE-compatible solutions. That's actually the good news. It's not just a marketing claim. We have fantastic technology for building Java Enterprise applications at Apple.

WebObjects contains really everything you need to build these enterprise class applications. There's an IDE. Actually, I like to joke there's like two or three IDEs right now, but we're working on getting to one. You get database mapping. You get code-free rapid prototyping. You get the ability to provide web services, which of course are very important today. And you get tools for HTML page layout.

Now, the advantages of what we provide with WebObjects over other development tools for Java Enterprise applications are, first of all, that we actually can accelerate time to market. And we do that in a number of ways. We do that partly because we enable very rapid prototyping of your applications. We can actually get you to a functional prototype, data-driven application extremely quickly with the WebObjects technology. And we then allow developers to do more because we give you so much out of the box with very little effort. can focus on the code that specifically adds value for their application. I also like to say jokingly they can focus on their core competency if they have one. And overall what you get from this is a reduced cost of ownership. You get the ability to write an application that does more. You get to write less code. Because you write less code, you test less code. You maintain less code. And you have to make fewer changes as your business evolves. And all of this has a net result of much lower cost of ownership for an application during its lifecycle.

So we like to think of WebObjects as a kind of a server-side digital hub. It's an application server that can generate web services as a presentation, HTML web pages as a presentation. It can connect to Java client applications. And of course, on the back end, it can be driven by our business systems, driven by our databases.

The architecture, then, is a three-tier architecture where we start with our data, which could be inside a database connected through JDBC or a directory through JNDI. We have Java code that represents our business logic. Effectively, we capture our business policy in the form of Java code in a business objects layer. And then we present it to our clients or customers through web applications, through web services, and through Java applications.

The development workflow is actually quite nice. You can start with the database and basically work your way from left to right in the diagram. So you, from the database, run our EO Modeler tool. The EO Modeler tool will actually reverse engineer the schema of your database, and it will generate for you business objects and generate Java stub code, which you then put into the Project Builder environment. And in Project Builder, that's where you actually can write the Java code that captures your business rules.

So this is where you're going to get the business or enterprise objects that are that middle layer, the objects that will encapsulate data and policy for your enterprise application. You can then go through the Web Objects Builder to create a web-based presentation. You can go through our Web Services Assistant to create a web service from those enterprise objects. Or you can go through Interface Builder to create a Java application for the desktop.

So first, building the model. As you can probably guess from this representation of three tiers, building the enterprise object model is an essential step in building a WebObjects application. And the EOModeler tool lets you reverse engineer a database. So it can go in and find all the tables, all the relationships, and represent that in the object model as entities and relationships. Or you can actually start with the ideal model for your database and generate the schema in the database using the EO Modeler tool. So EO Modeler can actually go and drop tables in your database as well.

And EO Modeler then generates the Java class files to represent your enterprise objects. So it really does capture the entire process of encapsulating your data and your business logic in these nice Java objects, these enterprise objects. And this is a screenshot of the EO Modeler tool at work, where we actually see a movie database and we can see some entities like movies, talent, directors, et cetera, and the relationships between them and their representatives, very traditional, one-to-one, one-to-many, many-to-many, et cetera, in the visual environment of UOModeler. Now, the key to our enterprise objects framework is really providing for automated data access. Really, really important point. There is no need to write SQL. You can actually be a very, very lazy programmer of database applications and not have to learn how to write SQL to do extremely powerful enterprise applications in WebObjects. This gives you not only the ability to be extremely lazy, but also the ability to have some database independence. And being able to switch databases is important in a couple of different ways. One is you may be, for instance, evaluating today migrating from Oracle to running on Sybase on XServe as a really great solution. Look at these beautiful things. Or more commonly, you're probably going to be developing on something like OpenBase, FrontBase, MySQL on your desktop machine. And you can actually very easily with no code migrate that to your deployment database that might be Sybase or Oracle or another database system. The other thing that you get out of our automated data access in the Enterprise Objects framework is essentially transparent persistence. So you get the ability to very easily make your Enterprise Objects persist. And they persist in the form of transactions to the back end data system.

What you get then is a better development process. You get a process in which you can start, very quickly get a prototype application. You can then flow into refining the business logic, refining the presentation. You can go to customize the specific areas of the functionality of the application that need to be customized to meet your business needs. And then you can polish the application.

And as a result, you're going to get more feedback. You're going to get, excuse me, you're going to get more opportunities to improve the application and serve your customers better and get something closer to what, you know, people working in competing environments might get with their 2.0 product and your 1.0 product because of the time that you're given and the tools that you're given up front with the, you know, tremendous prototyping capabilities. countries.

So building web applications, we provide a graphical HTML editor. It's called Web Objects Builder. And what Web Objects Builder allows you to do is to very easily marry the business logic and data in your enterprise objects to a web-based presentation. We have palettes of reusable components. And actually in this screenshot, you can actually see such a palette over here on the right side of your window. And on the bottom of this main window, what you see is, in fact, a browser or column view in which you are navigating the entities inside an Enterprise object and then associating those with presentation elements in the HTML in your web application.

So the idea here is we generate dynamic pages. In effect, the WebObjects builder and the WebObjects architecture allow you to isolate your HTML, the layout that describes your beautiful presentation, from the logic and obviously from the data. Well, what's important about this? We provide, first of all, all of the session management security and everything else on the back end.

And we take care of multiple forms of presentation for you. So you can very easily layout something that is XML or another type of layout. And the WebObjects elements generate the parts that are data-driven inside there. It's interoperable with JSPs. It's got excellent localization support, in fact, very, very strong localization support. But I actually think one of the more important things is that fundamentally you don't have this problem of some guy with 19 body piercings up in San Francisco going and blowing away some important piece of the logic of the application because he was messing around with the layout and the beauty pages that were there. And you're not, in turn, destroying the beautiful layout that the marketing people worked for 15 years on in order to get some new piece of logic in the application. So separating those two makes the application much more maintainable, gives you much more flexibility in terms of having the best possible presentation and the right business logic for the flow of your application -- or the right user interface logic for the flow of your application.

Dynamic web services. So you probably by now heard something about web services if you're doing web development. They are the new hype thing in the web world. Standards-based web services really help to drive application integration today. Server-to-server application integration, client-to-server application integration. And one of the great things about web services is we see that web services are interoperable with many different environments, many different programming languages, and they're empowering a new class of programmers to build these highly integrated network-driven applications. So there's some very exciting stuff happening in the world of web services. And we at Apple are providing some really powerful tools for enabling web services. You can basically be a client or a vendor of web services using the WebObjects environment.

We provide the tools for configuration and testing of the web services, for code-free generation of web services from your existing enterprise objects. And I think the key point is there's no need for you to worry about all of the alphabet soup of web services. Just like we take care of generating the SQL behind the scenes with Enterprise Objects Framework, we can take care of generating what you need for web services using our web services assistant and the tools in WebObjects. So we make it very easy to build very powerful web services within the WebObjects product. And this is a screenshot of our Web Services Assistant showing specifically how we can actually take, in this case, an enterprise object and edit the representation of the internal API versus what we are vending externally. And then what's nice is not only can you edit that representation, generate the appropriate files, but in addition, the web services system enables you to test that so that you can actually interact with that web service and see how it's going to function. Okay.

So not only can you be a vendor of web services by taking your EOs and actually vending them out using our tools, but in fact, you can be a client of web services. Mac OS X provides some really powerful web services capability. We've already got the tools to automatically generate code from WSDL. So there's a lot of real power for web services built into WebObjects. And I would encourage you to explore this at more length. And we'll have some sessions later on to cover this in detail.

Finally, as I mentioned, you can build desktop applications from WebObjects. And we have a fantastic capability called the Direct-to-Java Client, which enables you to basically very easily build a prototype database application with all of the key functionality of a data-driven application. And you do this with no code. We also provide tools within the Interface Builder environment for easily creating complex Java widgets in swing.

And we provide Java Web Start integration for the deployment of your application. So it's actually very easy to deploy. And here's a screenshot of the interface builder showing how we can associate an entity and an enterprise object with a UI element here, in this case a table view. And then this can all be translated into swing widgets, which can then run in your Java application.

So you get rich Java applications. You can deliver a dynamic, interactive desktop user experience, the kind of thing people are accustomed to in desktop applications. And one of the nice things about being able to use Java in this fashion is that you can actually reach a good trade-off between the performance and security. And what I mean by that is that in web-based applications, you're typically forced to, you know, have your presentation on the client and almost all of your logic back on the server. And that means that for certain types of calculations, you're always going to have to make a round trip to the server.

The good news is that actually is quite secure. It can completely, you know, hide your business policy from your end user. But it also means that you have this round trip coming every time you want to do something. With Java applications, it's extremely easy to push certain elements of that logic out to the client where it's appropriate and where there's not a security risk associated with that, so you can actually get more optimal performance and more interactivity in the end user experience, but you can still keep the elements back on the server that might represent your crown jewels, you know, the stuff you don't want to give away in your business policy. So you get that flexibility with Java clients, and that's actually really nice when you're constructing enterprise applications. We provide for flexible deployment of applications in the WebObjects environment. So you can actually deploy a WebObjects application through a J2EE application server like BEA's WebLogic or IBM's WebSphere, or you can deploy it on our WebObjects application server. So our WebObjects application server is a pure Java application server. It's got built-in clustering support. It has some really great remote configuration and monitoring tools. And I think one of the best elements of our application server is we have an unlimited license as a part of our $699 price. So that's, I think, a phenomenal all-you-can-eat deal for Java application servers today, and something that you should seriously think about.

Another nice thing about deployment in the WebObjects environment is that you can start simple and then make your life more complicated as demands may make that necessary. So basically, you can start with, particularly in the development environment, your database, your application server, and your web server all sitting on the same machine. And as the user community for the application grows, you can add instances of your WebObjects application. And you can serve the requests from your users much more readily with multiple instances of your application than with one. And scale your application that way, even on a single machine. Now, hopefully you've written the world's best application for whatever your competency might be. And you're going to get serious demand for this.

And when that happens, you actually able to very easily partition the web server from the application instances from the database server. So you can now run those on multiple machines. It doesn't have to be three at first. You could partition this in other ways. And still scale application instances horizontally and, in fact, also begin to scale horizontally with your web servers. So you can very easily scale the application effectively just by putting multiple machines running application instances, multiple machines running web servers, load balancers in front of this stuff, and grow web applications to enormous size. We have some great examples of that at Apple, obviously things like our Apple store and some other examples I'll discuss later. Now after hearing all of this from me, the marketing guy, you are desperate to get your hands on WebObjects and the good news is we provide a free trial version. So you can actually go right now, those of you who are sitting on Power Books in the the audience to the URL on your screen and get a free 30-day trial version for Mac OS X. We actually encourage you to read the Web Services with Web Objects article that we have up at the developer.apple.com website. And then once the 30 days is up, you're hooked. And you get this fantastic package for $699, which includes the development and deployment licenses. And we encourage you to check out the WebObjects website if you want to learn more about the product.

Another great way to get WebObjects, as it turns out, is to buy an XServe. This attractive carrying case for WebObjects basically is a one-U rack mountable enclosure. It's got a great server operating system which vaguely resembles Mac OS X server. And it bundles a WebObjects deployment license, so you can actually do unlimited deployment from one of these.

So that was a quick overview of WebObjects. Hopefully answers the basic question, what is WebObjects? What can I do with WebObjects? I wanted to briefly cover a few items about WebObjects in the news and then also talk about directions for the product. So some of you may already know that we announced WebObjects 5.2 in November of 2002. And the key new features we provided in that release were web services, some improved deployment of J2EE applications, and for web applications, streaming file upload capability. And we actually got some ink on this release, which was great. E-Week, InfoWorld, ZDNet, and others actually did some real coverage about how Apple is focusing on the enterprise and providing more enterprise capabilities with WebObjects product. So 5.2 was a great release in that respect. Now at Apple, we are extensively using WebObjects for internal applications as well as for some of our internet offerings. And any of you who are.Mac members are already familiar with the.Mac webmail application. This is a great webmail application built on top of WebObjects. And some of you may be vaguely familiar with this thing called the iTunes Music Store. This of course is the new scheme for driving Apple employees into bankruptcy. It's a fantastic, fantastic application.

As you heard yesterday in the keynote, we sold five million songs in the first eight weeks. And what's great, you know, makes my heart swell with pride is that this is of course entirely built on WebObjects 5.2. XServe and XServe RAID. And so it is a fantastic example of how you can use some of the capabilities in WebObjects to do in this case a very interesting thing. I'll actually zoom back. You notice that this doesn't look exactly like a web browser. The way the store actually works is it vends XML to iTunes as a client application. And so they basically have used WebObjects as the back end for this proprietary front end. I think it's a very clever use of some of the very flexible presentation capabilities in WebObjects as a product.

So that's a little update on what WebObjects is, some of the things that have happened recently with WebObjects. Where are we going? So I want to talk about three areas of things that surround WebObjects and what exactly is going to be happening in these areas over the next few months.

First of all, developer tools. So we're going to start from the assumption that since this is a 600 track, you guys are enterprise developers. I want to emphasize that we've been working hard to not destabilize the enterprise development environment we provide. So today, we are supporting development of WebObjects applications in the December 2002 Developer Tools release.

This is a very good, very solid, stable development release for you. We are actually supporting WebObjects development in Xcode in Panther. So when we get to the GM of Xcode, that will completely support Java and WebObjects development. And I can't emphasize that enough for those of you who may be interested in moving to Xcode in the near future. Excuse me? You can't hear me very well. You can't hear me very well. I can't speak up a lot more than I am. I said I can't.

So excuse me. Web objects will be completely supported in Xcode in Panther. So when we ship the Xcode development tool as a GM, we will support WebObjects in Java development. That's not something that's complete today. And so what I would say is that right now there are some of the features that you can actually experiment with in Xcode. But it's not something that's fully compatible today. So if you are using tools today to develop WebObjects applications for production, we strongly encourage you to stick with the December 2002 development tools. If you want to explore some of the future directions that we've got with Java and WebObjects development, we would strongly encourage you to take a look in that exploratory mode at what we're doing in Xcode. But understand that we're not yet to having the full feature set and the full support in Xcode for WebObjects development. Java VMs. Today, WebObjects applications are supported under Java 1.3.1. Our WebObjects 5.2.1 release improves WebObjects compatibility with Java 1.4.1. And in Panther, WebObjects applications will be supported under Java 1.4.1.

Java application servers. So today, as a part of Mac OS X server, we ship the WebObjects application server. We ship Tomcat as a part of Mac OS X server. And you can deploy a WebObjects application on top of the WebObjects application server, or you can deploy it on top of Tomcat. As a part of Panther Server, we're adding to the mix JBoss. And I'll talk more in a second about why we think JBoss is a fantastic addition to what we're doing with WebObjects and Mac OS X Panther Server. But the key point is that you can deploy WebObjects applications on JBoss.

So JBoss. Today, JBoss is, in fact, the number one application server for J2EE development. And it is that for a lot of reasons. But it's got the point of two million downloads a year and growing. And we're seeing that the key thing about JBoss is it supports a lot of the key J2EE and-- excuse me, EJB technologies. And so in particular, some things like container managed persistence and container managed relationships are inside what you get with JBoss. It also supports application hot deployment. So you can literally just drop an app into a key folder and immediately deploy it on your web server. And it does have clustering support.

So what are we doing with JBoss and Panther Server? Well, in effect, we're taking the JBoss environment and we're addressing a couple of critical areas where JBoss has been a little bit weak. As I mentioned, it's the number one development server for J2EE applications, but it's not the number one deployment server. And it's had a few weaknesses in terms of the management of deployment and the management of the applications as they run. And so what we're doing at Apple is in fact doing what we do best. We're providing some tools to help graphically manage the configuration and deployment of J2E applications in JBoss. Thank you.

We're also working on WebObjects 5.2.2. And as I mentioned earlier, one key element of what we're doing there is going to be Java 1.4.1 qualification. Another key element, as you can suspect from what I've just said, is JBoss on Panther Server qualification. And we're working on things to provide much better J2EE integration.

What does that mean? Well, first of all, we're going to be supporting JAR bundles. And what I mean by this is that, in fact, we're going to use Java native way of calling resources, which is going to make it much easier to deploy in a pure Java environment. So you're not going to have to deal with NSBundle issues for calling resources. We're going to support log4j logging, which is a much more standard Java logging mechanism. And we're going to support JNDI for both properties configuration and data source mapping. And the key point here is that data source configuration doesn't have to be file driven now, it can be JNDI driven, which can make it much more dynamic in terms of managing the deployment of an application in a J2EE environment.

How does this affect WebObjects development workflow? I talked earlier about this process of going and reverse engineering your data source and then working on your business logic in the project builder environment to do your Java coding. And what we're going to be doing is basically providing the tools through some new capabilities with xDocklet and Ant to enhance this process and make it much easier to build J2EE applications. xDocklet is basically a tool for aspect-oriented programming And effectively, what you can do is use some special Java doc tags in your code to add metadata. I think the key thing here is that you'll be able to maintain one file instead of five, 10, 12 files to represent one of these enterprise objects. And it's going to handle all of the code and file generation, the wars, EJBs, ears, and XML deployment descriptors. The EO Bean Assistant provides the ability to create entity beans from EO model files. And we provide a command line version for automated builds. And so what this does, the capability with xDocklet and the new features in EOBene Assistant, is basically to improve this J2EE development workflow so that now, basically, out of Project Builder, you'll be able to generate all of the elements you need to deploy a J2EE application very easily. So that covers basically the WebObject State of the Union. And at this point, I'd like to invite Catherine Wentz, the Documentation Manager, on the stage to talk about the documentation of State of the Union. Catherine? CATHERINE WENTZ: Thanks, Wiley.

Hi, this morning I'd like to talk about two things. The new documentation we delivered for the 5.2 release, and I'd like to introduce you to the new developer documentation website. For the 5.2.2 release, we delivered over 500 new pages of content. We added new documents to accompany the new features of 5.2.

We enhanced existing documentation and published new documentation in response to customer feedback. But this time, I'd like to express my appreciation for the feedback that we get on the documentation. First of all, it shows us that developers are reading the documentation and getting the information they need. Secondly, the WebObjects audience is fairly sophisticated and savvy. And so the feedback that we get is very detailed, focused, and specific. This slide and the next list the new documents we delivered for the 5.2 release. I'll just highlight a few of them. Web services. It explains the sample projects that are available both on the product CD and on the new website downloadable from inside the HTML version of the document.

Enterprise Objects. It's back after a long absence. It's very comprehensive. It covers information for all levels of developers, but it's primarily intended for the intermediate and advanced developers. It includes a roadmap so you can decide which sections of the document you need to read. Also, the old Enterprise Objects related programming topics have been revamped and incorporated into this document on the subject of programming topics. Like I said, some of the old ones have been updated and incorporated into enterprise objects, web applications and other books. Other topics no longer apply. There are a handful left that we're planning to update to coincide with the 5.22 release.

Project Builder for WebObjects developers. It supplements the main Project Builder documentation with WebObjects specifics. WebApplications, formerly known as Discovering WebObjects for HTML, gets you started with WebApplication development using WebObjects. It has a short series of exercises that get you started building your own WebObjects applications. And for a glimpse into the future, for 5.22, we're planning on publishing the API diffs between 5.2 and 5.22.

Now that I've talked about the documentation, I'd like to explain how to access it using the new developer documentation website. The new site is based on developer input. It aims for more consistent design and organization. and easier navigation, and for developers who are new to Apple terminology, clear category naming. What you see are static HTML pages created with a WebObjects application. As you can see, the categories are listed alphabetically, so you scroll down to the bottom to get to WebObjects. And this brings up the WebObjects documentation home page. There's a short explanation of WebObjects, and on the right-hand side of the page are three boxes, two of which this slide partially shows. New and updated documentation lists the new documents we've published over the past 60 days. Related WebObjects links points to links for the AppleCare Knowledge Base, the WebObjects support page, the Web Services document, and other documents. And the reference library resources box points to information for developer events, software seeding, sample code, and the like.

Farther down the page, you see a complete list of the WebObjects documents available on the site. You can sort by either title or publication date. Have any of you had a chance to see the new site? Please do. Over the course of this week, from 1:00 to 4:00 PM, there will be TechPub staff people at the ADC booth downstairs to show you the new site, answer your questions, and get your feedback. In closing, I hope that you've gained more knowledge about the WebObjects documentation set and how to access it using the new site. Again, thanks for your feedback. Keep it coming. And now back to you, Wiley, to close the session.

Thanks, Catherine. So hopefully you've got a taste for what WebObjects is, what the capabilities are, and what some of the directions are. I do want to emphasize that there's been a lot of work going on in WebObjects in the last year. And we would encourage all of you to actually take a hard look at the sessions, even if you're familiar with WebObjects. We have, first of all, some fairly good introductory sessions in terms of the WebObjects technical overview, session 603, WebObjects and J2EE, section 605, and rapid application development with WebObjects. I think this is a good track if you want to get an overview and a start in understanding WebObjects as an application development environment. We also have, for people who are more sysadmin deployment oriented, have their applications finished, 612, enterprise application deployment, and encourage you to check out that session. We have some more We're going to have advanced sessions as well on WebObjects. 6.14, WebObjects Reusable Components, is going to talk about reuse. 6.16, Advanced Topics in EOF. And 6.24, Creating Web Services, which I think is going to be a very exciting session for those of you interested in that area. We also encourage you, of course, to come to the feedback forum for WebObjects. That's FF007. WebObjects. And that will be in North Beach Thursday at 9:00 AM. So that's a quick overview of the session roadmap. We have, of course, our who to contact slide. I encourage you to talk to these people if you have feedback and questions on the WebObjects product.

Of course, we've got a lot of resources available online at apple.com. I think Catherine has already spoken to some of that. And encourage you to join our WebObjects announced mailing list to get news as we update it on WebObjects. So at this point, I'd like to invite questions from the audience.