Posts tagged 'java'



Sun open sources Slynkr, Digg-like social bookmarking app

Sun just open sourced an interesting Java webapp called Slynkr that supports a Digg-like form of social bookmarking and tagging. You can get the source and docs at slynkr.dev.java.net.

Slynkr was developed inside Sun by Jamey Wood and others. The small community that formed around it found it useful and fun and wanted to share it. Slynkr was first deployed externally (and experimentally) at slynkr.sunwarp.net and more recently it was put into production at www.sdnshare.com.

Slynkr has a nice feature set and UI, but under the covers it needs some work. It's only been tested with the Sun app server and Oracle, so it's probably got some "portability" issues. For better or worse, it's got a simple Servlet/JSP and JDBC architecture -- no frameworks or persistence layer yet. Jamey is interested in improving the architecture, making it work on multiple servers and databases and growing a community around the project. So if you're interested, grab the source, join the mailing-list and get in on the ground-floor of an cool new open source project.

Update: check out Jamey's post on Slynkr for some more background.


TS-6029 - Beyond Blogging: Feeds in Action

As usual, I'm enjoying JavaOne and meeting lots of new people and putting faces to names. I've also been practicing my talk daily so I can give you my best performance, so eat lunch a little early or a little late and come see how it goes. Here are the details:


Propono 0.5 released

ROME Propono 0.5 is a minor bug fix release of Propono. You can get the release files and updated Javadocs from the Propono 0.5 release page.

Blogapps 2.0 released

I just uploaded the files for the Blogapps 2.0 release. It includes the new Blogapps Examples, which have been reorganized, expanded and modified to use ROME Propono instead of the old Blogapps Blog Client. It also a new Blogapps Server, a super easy-to-install blog/wiki server based on Roller (4.0 code-base), JSPWiki 2.4 and Derby. You can find the full release annoucement here on the Blogapps site.

Roller graduation and 3.1 announcement

Finally! Roller has graduated to become a top-level Apache project and we've shipped the long awaited Apache Roller 3.1 release. You can find the full announcement on the Roller mailing list and on the Roller project blog and our new top-level site at http://roller.apache.org.


5th anniversary of Blogging Roller

Today is the fifth anniversary of this blog, which I started on April 11, 2002 to promote the Roller blog software that I had just finished writing.

Roller wasn't really ready for deployment at the time, so I started blogging using Userland Radio radio.weblogs.com. You can find my first post on Radio here FIRST POST!!! You can also find the original Roller 0.90 user guide on the old site, complete with screen-shots. A couple of weeks later, my article on Roller was published at OnJava.com and folks started to take notice of Roller.

Now, five years later, Roller has graduated from the Apache Incubator to become Apache Roller, blog-tech is my full-time job at Sun and I'm still Blogging Roller. Thanks to Roller users and contributors everywhere for helping to make this possible.


ROME Propono 0.4 released

I'm happy to announce the first release of the ROME subproject Propono. Propono is a ROME-based Java class library that supports publishing protocols, specifically the Atom Publishing Protocol and the legacy MetaWeblog API. Propono includes an Atom client library, an Atom server framework and a Blog client that supports both Atom protocol and the MetaWeblog API.

Here's the project page
  http://wiki.java.net/bin/view/Javawsxml/RomePropono

Here's the Propono 0.4 release page:
  http://wiki.java.net/bin/view/Javawsxml/RomeProponoRelease04

And here's a link to the API docs, which include details, diagrams and code examples:
  https://rome.dev.java.net/apidocs/subprojects/propono/0.4/overview-summary.html

I'll be testing Propono this week and next (at the Google-hosted APP interop meeting) so now is a great time to provide feedback and bug reports. I plan on releasing Propono 0.5 in the *very* near future.


@JavaOne: Beyond Blogging: Feeds in Action

As promised here's some more info on my JavaOne 2007 session. It's based in part on the Beyond Blogging presentation that I presented to a tiny audience at the local Tri-XML conference last year. Tim Bray didn't attend my talk, but he read the slides and called them "the single best introduction and overview I’ve ever seen about feeds and syndication and RSS and Atom and all that stuff." I shouldn't brag. Had he attended the talk he might have had an entirely different opinion, who knows. Anyhow, the presentation has been updated, stream-lined and large portions rewritten to cover ROME and ROME's new Propono sub-project. [Read More]

Geertjan's blog

I've really been enjoying Geertjan's blog recently. Lots of interesting details, screenshots and his passion for his work really comes through. His posts on the Netbeans Schliemann generic languages framework and today's Capturing Matisse make me want to drop everything and start hacking Netbeans. And I'm especially happy to see that somebody is interesting in Breathing Life Back into a Dead Coyote (part 1 and part 2), which is currently the main vehicle for Groovy language support in Netbeans -- I'd hate to see Groovy dropped in the mad rush to Ruby.


@ApacheConEU: Roller and blogs as a web dev. platform

Last week was deadline week for JavaOne and ApacheCon EU presentations, so I was busy. Fortunately for me, my other deadlines were postponed, I did some begging for time and I actually had time to take a short vacation; a family reunion at Stone Mountain park, Georgia. Here's some more information about my ApacheCon talk and an outline of the slides. 

[Read More]

Latest links: March 21, 2007


JRuby on Roller

This is just a quick follow-up to my previous post on Pluggable renderers and scripting languages in Roller. It took me a while, but I finally made JRuby code work inside a Roller page template. Here's an example JRuby page template that displays most recent blog titles and text in HTML format.

$out.println "<html><head>"
$out.println "<title>#{$model.weblog.name}</title>"
$out.println "</head><body>"
$out.println "<h1>#{$model.weblog.name}</h1>"
$model.weblogEntriesPager.entries.keySet().each {|day|
   $model.weblogEntriesPager.entries.get(day).each {|entry|
      $out.println "<h3>#{entry.title}</h3>"
      $out.println "<p>#{entry.text}</p>"
   }
}
$out.println "</body></html>"

Not the most beautiful thing in the world, I must admit. Any JRuby experts reading along? Is there a simple templating solution that will work in JRuby... something like Groovy Templates? And is there a way to map puts output to a java.io.Writer that will work via BSF?

Sun Web Developer Pack R1 with RSS and Atom goodies

The Sun Web Developer Pack (SWDP) finally uncloaked today, so I can talk a little more openly about what I and my Java EE co-workers have been working on. You can get the full scoop at the SWDP site, but basically SWDP is a bundle of technologies to help developers build "Web 2.0" or next-generation web applications on the Java platform. Ajax, scripting languages, REST and of course RSS/Atom are all part of that. The RSS/Atom bits are ROME 0.9 (Beta), Blogapps 2.0 (Early Access) and a ROME-based Atom Server kit based on code from Roller.  There are also example Atom server implementations in the REST API and Phobos components of the pack.

I'm pretty excited that we're putting some resources behind ROME and that both ROME and Blogapps are part of SWDP R1, but I'm even more excited about the next release. In R2 we'll drop the Atom Server Kit and Blogapps BlogClient and we'll replace them with ROME Propono a brand new Atom protocol client and server library that we're getting ready to contribute to the ROME project.

I haven't had a whole lot of time to experiment with the various components in the pack, but I have played with Phobos and I think it's pretty compelling. Phobos is a "lightweight, scripting-friendly, web application environment." It's not just for creating server-side JavaScript applications, but that's the angle the I find interesting. So many developers are creating JavaScript/Ajax applications these days that working in JavaScript on both client and server-sides makes sense -- especially when you can debug into JavaScript code in your IDE as you can with the Netbeans Phobos module. Also note that the jMaki Ajax components work with JSP, PHP and Phobos -- jMaki and Phobos look like a winning combination.

JPA JPA JPA

That's three JPAs. I've been fighting to get a new Roller back-end running, one that uses the Java Persistence API (JPA) rather than the native Hibernate API that we use now.

Craig Russell and Mitesh Meswani wrote the new JPA back-end and tested it against Toplink/JPA (JPA #1) and the Derby database. I've been refactoring it, updating it for Roller 4.0 and testing it against various other databases and JPA implementations with mixed results.

I tried to run it against MySQL, ran into a bunch of problems and fixed those. Allen switched out Toplink/JPA for Hibernate/JPA (JPA #2), ran into problems and fixed those. I switched out Toplink for Apache OpenJPA-incubating (JPA #3), ran into problems and fixed those. So now we have a back-end implementation that runs against OpenJPA, but requires two small code changes to work against Toplink -- not exactly an ideal situation.

I'm a JPA newbie for sure and still trying to figure this stuff out, but it does seem that switching JPA implementations is not as easy as it ought to be.

In other JPA news...

I didn't realize that the open source version of Toplink that Oracle contributed to Glassfish, Toplink Essentials, is the pee-wee version of the full and still closed source Toplink product. That's why I was somewhat surprised to hear that Oracle is open sourcing and donating the full version of Toplink to the Eclipse foundation.

Two observations about that news. First, this move appears to be a fork that will result in a CDDL licensed version of Toplink Essentials in Glassfish and an EPL version in Eclipse -- I hope I'm wrong about that. And second: apparently IBM will be soon be supporting two versions of JPA: OpenJPA via Geronimo and Toplink/JPA via Eclipse.


Hudson: an amazingly easy-to-use build server

I've never used a build or "continuous integration" server before so I've got nothing to compare Hudson to, but I can say this: it's amazingly easy to install and configure. Just drop the hudson.war file in Tomcat's webapps directory or deploy to your favorite app server and start setting up build jobs.

Hudson can pull from CVS and Subversion. It can run Maven builds, Ant builds and shell scripts. It can publish  javadocs, build artifacts, test reports and RSS feeds. The UI is simple but full of options and with plenty of built-in help. Here are the projects I'm monitoring with Hudson:

 screenshot of hudson
My Hudson is setup on old (Pentium 450mhz) Linux box and I've got it setup to poll my projects every 30 minutes and do a full rebuild and test on any change. I'm subscribed via RSS, so I'll quickly learn of any failure. Very handy.

Read more about Hudson at the project's Java.net site and the Aquarium has a nice set of Hudson links.


JavaOne here I come!

JavaOne banner 

I'm very happy to report that my talk was accepted for JavaOne 2007. I'll be giving a thoroughly revamped and updated version of my Beyond Blogging talk (aka Johnson on Feeds), which adds in-depth coverage of ROME and ROME Propono. I'm excited about going to JavaOne again, but I'm also feeling a bit frazzled. I'm swamped with work right now and I've got a stack of deadlines clustered around the March 20 due date for the slides.

I helped out with the session selection for the web-tier track this year so I can say with some confidence that at least one track is going to rock -- we've got a wonderful set of talks lined up, so don't miss it. The full session schedule isn't online yet, but registration is open.


Netbeans 6.0 pre-beta first impressions

When I saw that Tim Bray upgraded to a Netbeans 6 daily-build and it seemed to work OK, I just had to give it a try myself and I'm glad I did. I've been using it for a solid day now and I can tell that it's going to be a vast improvement over 5.5. It's fast. It starts up way faster than 5.5, seems faster overall and shutdown is almost instantaneous. Bravo! What else?

Tim was impressed by the hip new JRuby support, and I'll give that a try, but right now I'm digging the more routine things, things that I've been missing from Eclipse like multi-file search & replace, local history and a smart editor. The only thing I miss from Eclipse now is this: Netbeans has a nice Ctrl-Shft-O to Go To Type feature and I use it all the time; why can't we have a nice slick Ctrl-Shft-R Go To Resource like Eclipse does?

Anyhow... NB6 is looking good already, so if you're using 5.5, you might want to take the latest milestone Netbeans 6.0 M7 or one of the dailies for a spin.


Re: javax.ws.rest

I've been updating my javax.ws.rest post with links to blogs about JSR 311: Java (TM) API for RESTful Web Services. I went from a couple to nine links today and I'll probably keep on linking, but I'm about to go quiet for couple of days. It's wiki mountain weekend time again.

 N.C. mountain house with snow


javax.ws.rest

That's big news. A standard Java API is coming for building REST based web services. If you're an expert in REST, you can participate in it's development by signing up for the expert group. Apache, BEA, Google and Jerome Louvel (the RESTlet guy) are on-board. Here's the intro from the JSR:

JSR 311: Java (TM) API for RESTful Web Services: This API will enable developers to rapidly build Web applications in Java that are characteristic of the best designed parts of the Web. This JSR will develop an API for providing REST(Representational State Transfer - See reference to Roy Fielding's dissertation in section 3.1) support in the Java Platform. Lightweight, RESTful approaches are emerging as a popular alternative to SOAP-based technologies for deployment of services on the internet. Currently, building RESTful Web services using the Java Platform is significantly more complex than building SOAP-based services and requires using low-level APIs like Servlets or the dynamic JAX-WS APIs. Correct implementation requires a high level of HTTP knowledge on the developer's part.

This JSR will aim to provide a high level easy-to use API for developers to write RESTful web services independent of the underlying technology and will allow these services to run on top of the Java EE or the Java SE platforms. The expert group will investigate whether a subset of the API can be made used with Java ME. The goal of this JSR is to provide an easy to use, declarative style of programming using annotations for developers to write REST ful Web Services and also enable low level access in cases where needed by the application.

RESTful Web Services is a relatively new area in the industry and there are still a lot of unknowns in this space. For example, a key aspect of RESTful Web Services is for the service to be stateless. However, this often requires the developer to produce boiler-plate state restoration code that could be avoided with state-aware API help. We expect the expert group to be an active and engaged group of people participating to prioritize and help drive issues to achieve the end goal of a developer friendly API.

Here are a couple more links about the new JSR:

  • Elliote Rusty Harold is not exactly positive, saying "this is like asking Karl Rove and Dick Cheney to write the Democratic Party platform" but concludes with a call for participation: "are there any JSR members here who might join the working group and bring some sanity and actual REST experience to the development of the eventual specification?"
  • Jerome Louvel explains the idea of REST annotations and explains that implementations will be possible with JAX-WS, Servlet API or Restlet API.
  • Dan Diephouse says "This is excellent news - I’m glad to see people are thinking more seriously about RESTful services on Java" and "Expert group members may be interested in checking out the previous work I’ve done on Java REST annotations"
  • Brian McAllister: says the JSR sounds like another case where "reasonably good developers trying to design software for presumed-incompetent developers which will in fact be used unhappily by basically competent developers."
  • Mark Hadley addresses some of the concerns raised above and provides an interesting code example showing the REST annotations in action.
  • Pete Lacey: "Initial thoughts: 1) Cool! 2) The servlet API is not ideal, this is needed. 3) I hope they don’t screw it up (see JAX-WS)."
  • Steve Loughran: "I don't have the faintest clue what a REST API should look like, except that it must not look like JAX-RPC/JAX-WS"
  • InfoQ thread: summary of news and three comments as of Thursday
  • Paul Sandoz: "I have been wanting to work on such an API and implementation for about 5 years! [...] Now the Web zeitgeist is back and so are we :-)"

« Previous page | Main | Next page »