The Wayback Machine - https://web.archive.org/web/20070621030319/https://keaton.dev.java.net/
Login | Register
My pages Projects Communities java.net

keaton
Project home

If you were registered and logged in, you could join this project.

Summary Java-to-QTKit wrapper for using QuickTime in Mac Java apps
Categories None
License The MIT License
Owner(s) invalidname

Calling QTKit from Java


The Keaton project is an effort to put a Java wrapper around the Cocoa-based QTKit framework, making it easier for Java developers to use QuickTime features on Mac OS X.

Why QTKit?

QTKit seems to be the future of application-level multimedia development on Mac OS X. While the framework is fairly simple and limited in its Tiger version -- consisting of only seven classes so far -- there is reason to think that it will supersede the Carbon-based procedural-C QuickTime API eventually. One point indicating that QTKit is the future of QuickTime is Apple's comment in its Leopard overview that QTKit will be the only way to write 64-bit QuickTime applications; the "classic" QuickTime API will remain 32-bit only.

Keaton for application developers

When released, Keaton will look like a fairly simple multimedia framework, consisting of just a handful of classes. These classes will map one-to-one with their Objective-C equivalents, making porting easier. For example, if you had the following QTKit code in Obj-C:


   // assume a QTMovieView, "view", has been created with IB
   NSURL* url = [NSURL URLWithString:"http://www.company.com/movie.mov"];
   QTMovie* movie = [[QTMovie movieFromURL: url];
   [view setMovie:movie];

then the equivalent Keaton code would be:


    QTMovieViewComponent view = new QTMovieViewComponent();
    java.net.URL url = new java.net.URL ("http://www.company.com/movie.mov");
    QTMovie movie = new QTMovie (url);
    view.setMovie (movie);

The goal of the project is to map all QTKit methods to Java, except in cases where the method call is only of relevance to Cocoa. It uses a combination of Java and Objective-C source. The project creates a JAR and a .jnilib file, both of which can be dropped into the /Library/Java/Extensions folder to make Keaton available to all applications.

Keaton for project developers

Currently, the project uses an ant script to build both the Java and native code. Note that the ant call to gcc currently can't deal with spaces in the path to the Keaton folder. An XCode project file is a to-do.

The README file has more information on building the project, but the quick-start is to just cd to the code directory and do ant code. You can also run a simple test application with ant run. Note that you must have the Mac OS X 10.4 SDK, which is available as part of the XCode tools install, to compile this project.

What about Lloyd?

The Lloyd project was started as an attempt to extend the capabilities of QuickTime for Java, by providing Java wrappers to functions not exposed by QTJ (such as new features in QuickTime 7, like extended metadata support and frame-reordering codecs), and by creating all-Java convenience classes where approriate. However, QTJ is clearly headed for obsolescence, if not explicit deprecation, as Apple has not significantly updated it since late 2003, despite the addition of major new functionality to the underlying QuickTime framework, and the deprecation of some of the frameworks that QTJ depends on (QuickDraw being the most obvious example). With its QT/QTJ foundation crumbling, there is no point investing any further effort in Lloyd.

QTKit is the future of application-level multimedia support on Mac OS X, and that's what Keaton will work with.