Back to the book.
<a href= "http://www.raibledesigns.com/page/rd?anchor=professional_jsp_2_0_update">Like Matt, I'm working on Professional JSP 2.0 again. The new publisher wants to change things around and I'm fine with that. He has a lot of good ideas about both of my chapters, but the changes are going to keep me busy over the next couple of weeks. On a side note, I'm finding that using a private wiki to organize my thoughts for this book, my weblog entries, and other activities (comparison shopping for example) works really well.
Blogging TSS.
Cameron is doing a great job of <a href= "http://www.freeroller.net/page/cpurdy/20030628">blogging The Server-Side Symposium
Go JDO.
<a href= "http://www.dominicdasilva.com/index.do?date=20030626#180750">Dominic Da Silva notes that JBoss has decided to go with JDO for POJO persistence. There is also a nice pair of articles on JDO at the O'Reilly site: JDO Persistence, <a href= "http://www.onjava.com/pub/a/onjava/excerpt/chap_07/index1.html">part 1 and <a href= "http://www.onjava.com/pub/a/onjava/excerpt/chap_07/index1.html">part 2.
java.net: a most ambitious effort.
Dan Gillmor: Sun is doing interesting things with its java.net site, including "community" functions such as weblogs and even Wikis. It's the most ambitious effort I've seen yet by a big company -- even though it's a tech company -- to use the Web in a more conversational way.
Sick of the freerollers.
<a href= "http://www.theserverside.com/home/thread.jsp?thread_id=19897&article_count=154#86354"> Bill Burke - Chief Architect of JBoss: I'm sick and tired of the mud that's thrown at us on a constant basis against the nominal success we've achieved so far. I'm sick of the freerollers who chip at our hard work or try to make a name for themselves by bashing Marc or JBoss or JBossGroup in their ego-centrical Blogs. You don't see any of us writing blogs attacking these people. Hell, we don't even have blogs!
Old news, now with popups!
Checking in with java.blogs on a Monday morning via SharpReader. It is very cool to find new releases: Ant 1.5.3, JBoss 3.2.1, Hibernate 2.0, Netbeans 3.5, and Struts 1.1RC2. It is not so cool to recieve a popup from Ammai.com every time I click on a news item and to find that most of this news is over a week old. SharpReader needs a popup blocker.
Rave reviews.
Sun's new web application development tool, Rave, sounds really cool. Here what the bloggers are saying about it:
Simon Brown: Anyway, if you've done any programming with a 4GL environment like PowerBuilder, VisualBasic, etc then this is pretty much the same, albeit for the web. You can drag and drop components on to the canvas (the web page) and hook them up with event listeners, datasources and web services. All in all a very quick way to build webapps and certainly aimed at the corporate developer market that Sun is trying to bring over to the Java world in an effort to significantly increase the developer community. Good demo, nice tool.
Dehashish Chakrabarty: Sue Spielman has some more details on Project Rave. The key phrase here is "simplified development model", in accordance with Sun's aim of "lowering the barrier and entry point for the corporate developers" and "sucking up the VB corporate/IT programmers into the Java platform". It's another thing that, as Sue reported, a 404 error surfaced during Hammerhead's demo at JavaOne. Rave uses NetBeans Platform as its base (though visually it will be different) alongwith JavaServer Faces and JDBC Rowsets standards. And if you didn't know Sun has no plan to make this project open source.
Cedric Beust: I have to say I was quite surprised by the slickness of Rave, until I realized why: it doesn't seem to be based on NetBeans. Well, that's my impression. I was a bit far from the screen to be sure, but it certainly didn't look like the standard NetBeans interface to me.
Andres Aguiar: Project Rave is a tool for those guys. It looks cool, and it's fast, as they built it with no extensibility hooks as other more ambitious IDEs (NetBeans, Eclipse). Right now it just supports Web applications, and it's not targeted to the EJB developer, it's for guys that want to access their database directly, with tools to do data binding directly from the database, etc. It targets the same people as ASP.NET Web Matrix.Cedric and Andres are wrong. Rave is, in fact, based on Netbeans.
java.net better than SourceForge for Java projects?
Overall I think java.net looks like a great start, lots of potential there. I think the site could benefit from better navigation because it really is difficult to figure out where things are and how it all fits together. Other than that, the site looks great and there is lots of interesting content there. I'm still exploring.
The open source project hosting looks really cool and it seems to include the same set of project hosting and management features as provided by SourceForge, plus project wikis and blogs. I wonder if Roller would benefit from java.net. It would be a royal pain to switch over from SourceForge, I'm sure, so I really wonder if it would be worth it. What SourceForge features are missing from java.net? I guess this is just the SourceCast vs. SourceForge question. Would a new home there be worth the relocation expenses?
weblogs.java.net, oh the shame!
I offered to install Roller for Sun, but noooooooo, they had to go and steal (from O'Reilly) some rinky-dink little blogging package. Sheeesh! Are those blogs for real? They are all identical, no themes. Some of them look a little forced, as in "you will blog now please employee #76654, get to work." The others look and feel like the O'Reilly blogs, you know, the ones where the author is maintaining two blogs: one personal blog and one O'Reilly blog which is generally not worth subscribing to. All the interesting stuff shows up on the author's personal blog and, occasionally, an article or two shows up on the author's O'Reilly blog.
On top of all that, they didn't bother to tie into java.blogs. Shouldn't java.blogs be a federated site? Or, at least a linked site?
Whatever. I'll get over it. Maybe some of those blogs will be successful and truly worthwhile, who knows. At least Gosling's blog looks genuine.
XAWT: A Faster, Lighter AWT for X11 Desktops.
[via Wes Felter] I'm sorry I'm gonna miss this talk. I guess it is not really anything ground-breaking, just a new set of peers, but it stills sounds very interesting and maybe there will be some discussion of the future of Swing and AWT.
AWT on Linux and Unix systems is currently based on the Motif widget set. AWT is often called a Heavyweight Toolkit, because of its Motif-based peers. The construction of one Toolkit on top of another Toolkit can often cause "impedance mismatches" that can lead to sluggish performance due to the excessive layering of code, not to mention quality problems and nightmare bugs. In JavaTM 2 Platform, Standard Edition (J2SE TM) v1.5, AWT will take on a new set of peers that remove the Motif toolkit from underneath AWT. This provides a high-performance and high-quality Toolkit that will be 100% backward compatible with existing JavaTM technology applications.
DRRTY JAVA.
Reuters: Sun will at its JavaOne conference this week unveil plans for an advertising campaign and new Web sites, featuring singer Christina Aguilera toting a Java-enabled cell phone that plays games, Sun executives said.Yep, it's for real.
Q: Deploying JBoss Nukes to other app servers?
I'm interested in open source Java CMS, but my customers run on a variety of application servers, not just JBoss. I read that Nukes is a J2EE app so I assume automatically that it will run on other app servers, but I also read that it requires JMX and that this makes it difficult to install on other app servers. What is the deal? For example, Weblogic supports J2EE and JMX, so what will it take to deploy Nukes to Weblogic?Still no response. Maybe the blogosphere will be more responsive than the Nukes forum.
Dumbing-down AOP.
Merrick Schincariol explains Aspect Oriented Programming (AOP) and attempts to dumb-it-down to my level. This is not an easy task, but he does it well.
Yet another open source Java CMS/portal server.
The JBoss guys have ported PHP Nukes to Java, read about it at O'Reilly's place: Nukes: the Open Source Java CMS. Looks interesting, but it is certainly not the first comprehensive open source Java CMS on the market as the author claims. Also, I don't understand why they include a weblog about fashion trends.
Competition is always a good thing.
Anthony Eden: JBoss Group is causing a lot of problems with the whole Sun vs. JBoss stink and I think a lot of it is due to "management" decisions within the JBoss Group. Having another company offering support for open source development will hopefully bring the JBoss Group to terms with their corporate mortality and will cause them to rethink their attitude. Competition is always a good thing.
The Coat-of-paint anti-pattern.
Developing a wrapper class or API can be a way to add value to an existing API and can also be a way to isolate an existing API. Wrappers can be very useful, but when applied incorrecly, wrappers can be counter-productive and downright irritating. For example: the Coat-of-paint anti-pattern.
In this anti-pattern the developer wishes to isolate an API behind a wrapper, so he develops a very thin wrapper class for each of the classes in the API. Next, he procedes to use these wrapper classes throughout his code, but because the wrappers are so thin, his code still depends on the concepts, relationships, and often the method signatures of the wrapped API. The wrapper is like a coat-of-paint on the wrapped API, it changes the appearance of the wrapped API but does not truly isolate it.
A better approach would be for the developer to divide his code up into modules or "tiers," with each module having a well defined interface. Instead of isolating the API he wishes to hide behind a thin wrapper, the developer should have isolated the API by using it in only one of his modules.
UPDATE: Another, possibly more difficult, approach would be to develop an abstraction layer over the API that is to be isolated. If you will enventually need to switch out the wrapped API for some other API, then an abstraction layer is the way to go. It is a more difficult approach because, unless the underlying APIs are simple, developing a good abstraction over them can be a challenge.
HEADS UP: MySQL Connector/J v3.0.7 infinite loop problem
It took me a while to figure this out so... heads up! If you are using the MySQL Connector/J v3.0.7 JDBC driver then watch out for the infinite loop problem. This is a "known issue that happens when connections and statements are closed in particular circumstances." A fix will be included in the Connector/J v3.0.8 release.
In my case, this appeared as an intermittent problem with the Roller login. This problem appeared the other day on my site, causing Roller logins to fail, so I switched to one of the MySQL Connector/J v3.0.X nightlies and it seems to have solved the problem.
2003-05-25 03:08:27 HttpProcessor[10030][3] Starting background thread
2003-05-25 10:08:26 HttpProcessor[10030][2] process.invoke
java.lang.StackOverflowError
at java.lang.Exception.<init>(Exception.java:41)
at java.io.IOException.<init>(IOException.java:40)
at java.net.SocketException.<init>(SocketException.java:29)
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:69)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:127)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:1478)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:1405)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:879)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:945)
at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:917)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1841)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1787)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1768)
at com.mysql.jdbc.Connection.rollbackNoChecks(Connection.java:1369)
at com.mysql.jdbc.Connection.rollback(Connection.java:1356)
at com.mysql.jdbc.Connection.close(Connection.java:1028)
at com.mysql.jdbc.Connection.cleanup(Connection.java:2050)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1853)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1787)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1768)
at com.mysql.jdbc.Connection.rollbackNoChecks(Connection.java:1369)
...
Merrick on JAXB.
Another excellent new Java blog on FreeRoller, this one by Merrick Schincariol. His entry on JAXB caught my attention. After waiting years for JAXB, I guess it is finally time to see how it stacks up against Castor-XML. Merrick likes it.
Patrick explores MVC alternatives.
Patrick Peak continues his explorations of Struts, Webwork, and Spring. For me, comparing different technologies is the fast-track to understanding the technologies.
« Previous page | Main | Next page »