What
 · Technology
 · · Java
 · · · · Coding (1 fragment)
 · · · JavaOne2005 (1 fragment)

Keybase Client · I got in­ter­est­ed in Key­base.io the day I left Google in March, and I’ve been evan­ge­liz­ing it, but even more the idea be­hind it: Us­ing au­then­ti­cat­ed posts here and there to prove public-key own­er­ship. Al­so I’ve con­tribut­ed Keybase-client code to OpenK­ey­chain (let’s just say “OKC”), a pret­ty good An­droid cryp­to ap­p. I’m more or less done now ...
[6 comments]  
Java Security Hole · Good sol­id cryp­tog­ra­phy is an es­sen­tial foun­da­tion for sound busi­ness us­age of the In­ter­net, and es­sen­tial to pro­vide a sane pri­va­cy lev­el. But the tools for Ja­va pro­gram­mers are in hor­ri­ble shape ...
[4 comments]  
Clojure N00b Tips · Clo­jure is the new hot­ness among peo­ple who think the JVM is an in­ter­est­ing plat­form for post-Java lan­guages, and for peo­ple who think there’s still life in that ol’ Lisp beast, and for peo­ple who wor­ry about con­cur­ren­cy and state in the con­text of the mul­ti­core fu­ture. Over the last few days I’ve been severe­ly bipo­lar about Clo­jure, swing­ing from “way cool!” to “am I re­al­ly that stupid?” Here­with some getting-started tips for new­bies like me ...
[7 comments]  
NetBeans 6.7 · Who knows how many more chances I’ll have to talk about Sun tech that I like? In the five years I’ve been here I’ve been pleased by OpenSo­laris and Fish­works and HotSpot and GlassFish and oth­er­s, but NetBeans is #1 in my heart. I just down­load­ed 6.7 RC3 a cou­ple of days ago to try to fix a prob­lem (it didn’t, but the prob­lem was amus­ing) and it’s re­al­ly good stuff. Gen­er­al­ly nice, and with one ab­so­lute­ly life-changing new fea­ture ...
[6 comments]  
Ben and Dion and JavaFX and Ajax · Last Tues­day at JavaOne, Dion Al­maer and Ben Gal­braith staged a mock-debate: Ajax Ver­sus JavaFX™ Tech­nol­o­gy. I say “mock” be­cause it wasn’t a de­bate, it was a mug­ging ...
[8 comments]  
JavaOne 2009 Notes I · I’m cov­er­ing these events in my ca­pac­i­ty as a blog­ger; here in the press room, the con­sen­sus is that this is JavaOne’s last go-around. I have no in­side in­for­ma­tion and not even a guess, so this is 100% fact-free spec­u­la­tion, but Or­a­cle does have a track record of rolling in the trade shows of the com­pa­nies they buy: BEA, Siebel, Peo­pleSoft, and so on. I’d prob­a­bly be in fa­vor, just be­cause I know the crush­ing load that this kind of shindig puts on in­sid­ers to get their wares ready to show; I’m not sure you could do this more than once a year, ef­fec­tive­ly ...
[6 comments]  
Tab Sweep — Tech · Here­with glean­ings from a cir­cle of brows­er tabs fac­ing in­ward at the world of tech­nol­o­gy. Some are weeks and weeks old: Am­ber Road, Clo­jure, tail re­cur­sion, cloud­zones, deep pack­et in­spec­tion, and key/­val­ue mi­crobench­mark­ing ...
[5 comments]  
Minimal Rack + JRuby + GlassFish Recipe · I’ve been work­ing on a lit­tle piece of Ruby-and-Rack-based Web in­te­gra­tion goo, and it’s done enough that we have to fig­ure out de­ploy­men­t. One rea­son I picked Rack is that it’s ad­ver­tised as de­ploy­ing on any­thing. The en­vi­ron­ment where this will live has some of this and some of that, and we’re us­ing GlassFish to tie it all to­geth­er, which seems like an ap­pro­pri­ate choice. So, the prob­lem is: How to plug a sim­ple Rack ap­pli­ca­tion in­to GlassFish? ...
[2 comments]  
AD XI: How To Use the GPS · [This is part of the An­droid Diary.] Some notes on how, as a pro­gram­mer, you can get prac­ti­cal use out of the “Location Providers” on ear­ly An­droid de­vices ...
 
AD X: Grumbledroid · [This is part of the An­droid Diary.] There’s a pat­tern in this tribe where you put “droid” on the end of, well, ev­ery­thing. Thus this ti­tle; here­with an­oth­er set of hands-on notes, this with a sort of grumbly tone ...
[3 comments]  
AD IX: Five Programmer’s Notes · [This is part of the An­droid Diary.] I’ve done a bunch more pol­ish­ing on my lit­tle demo-ware Feed Map­per; it even han­dles er­rors. Plus I’ve start­ed sketch­ing in the oth­er half, the thing that might turn it in­to more than a de­mo and drive some Cloud biz for my em­ploy­er. Time for some more give-the-feel-of-Android dis­patch­es from the coal­face ...
[4 comments]  
AD VII: Nine Programmer’s Notes · [This is part of the An­droid Diary.] Be­ing a dis­or­der­ly list of im­pres­sions tak­en away from a cou­ple of weeks of de­vel­op­men­t ...
[10 comments]  
JMMMDD · That stands for Ja­va Mo­bile, Me­dia & Embed­ded Devel­op­er Days; it’s a con­fer­ence we’re pre­sent­ing week af­ter next in San­ta Clara. I’m ob­vi­ous­ly super-interested in mobile-device pro­gram­ming these days, and have al­ways thought that JavaFX Mo­bile was the most in­ter­est­ing piece of the FX ef­fort; I can’t wait to get­ting my hands on some hard­ware. Un­for­tu­nate­ly I can’t make it to this one, but it looks like a good even­t.
[1 comment]  
AD V: Demo-Ware · [This is part of the An­droid Diary.] I’d had an un­of­fi­cial goal that the lit­tle An­droid goober I’m work­ing on should be demo-able by the end of 2008. I made it by half an hour. It draws click­able zoomable ren­di­tions of geo­tagged feeds (RSS or Atom) on Google map­s. The look and feel are cool. As of now, I’m not ac­tu­al­ly sure it’s use­ful for any­thing, but I think that geo­tagged feeds are po­ten­tial­ly very in­ter­est­ing in gen­er­al, so a view­er couldn’t hurt. The short-term lessons are about An­droid, though ...
[3 comments]  
Enterprisey but Good · In the old days I was a Perl guy and now I see the Web through Ruby-red spec­ta­cles. Like most peo­ple in the open-source and dynamic-language com­mu­ni­ties, I nev­er re­al­ly warmed up to Ja­va EE; tons of mov­ing part­s, too many lay­ers of in­di­rec­tion, too much XML con­fig­u­ra­tion, and any­how I didn’t want to use that lan­guage for writ­ing Web app­s. But it turns out you don’t have to like EE to be re­al in­ter­est­ed in app server­s.
[Up­date: Check the dis­cus­sion in the com­ments; there’s more to this than meets the eye­.]
 ...
[4 comments]  
The Summit · I at­tend­ed about half of the the JVM Lan­guage Sum­mit, from Wed­nes­day through Fri­day at Sun’s San­ta Clara cam­pus. I’m not re­al­ly an ex­pert on the deep nu­ances of JVM con­structs like call sites and per­mgen and class­load­ers and so on, but stil­l, I’m sor­ry I missed some. There were 70 or so peo­ple there, most­ly way smarter than me. Here­with im­pres­sions and pic­tures.
[Up­date: See al­so write-ups from Ted Le­ung, Cliff Click, and John Rose.]
 ...
[5 comments]  
Tab Sweep — Technology · I’d kind of got­ten out of the habit of do­ing tab sweep­s, large­ly be­cause my Twit­ter feed is such a se­duc­tive place to drop in­ter­est­ing links. But as of now there are around 30 tabs open on my browser, each rep­re­sent­ing some­thing I thought was im­por­tant enough to think about and maybe write about. Some are over a month old. Some of them have been well-covered else­where. All I as­sert is that af­ter I read each one of the­se, I didn’t want to hit command-W to make that win­dow go away. Uni­fy­ing the­me? Sure­ly you jest ...
[1 comment]  
JVM Languages Summit · This is a big deal, I think. The Sum­mit hap­pens Sep. 24-26 at Sun San­ta Clara. Our in­ter­nal heavy­weights will be there; JRuby, Jython, Da Vin­ci Machine, Gosling. Grant­ed, this like­ly should have hap­pened years ago; but stil­l, I think ex­cite­ment will be thick in the air.
 
All Free Now · On Novem­ber 12, 2006, I wrote Ja­va Is Free, about the GPL’ing of the Sun Ja­va source code. It was a good day. The job wasn’t 100% fin­ished then, be­cause there was en­cum­bered code we couldn’t GPL. As of to­day, it’s pret­ty well done. With con­tri­bu­tions from a bunch of peo­ple and or­ga­ni­za­tion­s, es­pe­cial­ly Red Hat’s Fe­do­ra com­mu­ni­ty and the Iced Tea pro­jec­t, the miss­ing pieces are filled in and the TCK has been passed. Most peo­ple don’t re­al­ize what a huge hur­dle the TCK is; we are talk­ing about a whole lot of te­dious, un­ex­cit­ing, ex­act­ing, work, and we all owe a tip of the hat to the peo­ple who ground their way through it.
[2 comments]  
Enterprisey Goodness · I tend to lik­ing sim­ple things, and to sus­pi­cion of big “enterprisey” soft­ware frame­work­s. I am dim­ly aware that up in the clouds there are plat­forms built on plat­forms built on plat­forms built on Java, tow­er­ing ed­i­fices where acronyms like “JBI” and “ESB” and “SCA” live. Ex­cept for, I could nev­er fig­ure out what they ac­tu­al­ly, you know, did. Let’s be hon­est; the com­plex­i­ty and the high-level arm-waving about “Integration” scared me away and I nev­er re­al­ly tried. Wel­l, I’ve stum­bled in­to a clos­er look and am be­gin­ning to think there’s some there there ...
[6 comments]  
Java in 2008 · I’m glad I went to JavaOne. I want to go again. In or­der of in­creas­ing im­por­tance: The Ja­va lan­guage is look­ing stale. The Ja­va plat­form is look­ing in­ter­est­ing. And the Ja­va com­mu­ni­ty, well, it’s some­thing spe­cial ...
[2 comments]  
JavaOne Day One · What­ev­er your feel­ings about Java, the open­ing of the JavaOne con­fer­ence is re­al­ly an out­stand­ing­ly great even­t. I’m not sure if, in any giv­en year, it’s the sin­gle biggest gath­er­ing of soft­ware de­vel­op­er­s, but it’s re­mark­ably huge. I have some pic­tures to sug­gest the fla­vor of be­ing there, and some specifics on the Neil Young seg­men­t ...
[4 comments]  
Warm OSS Glow · I see that NetBeans 6.1 is out. It’s a nice enough re­lease (MySQL im­prove­ments, sur­prise sur­prise), but here’s what touched me. I don’t know how many oth­er OSS projects do this, but I got an email this morn­ing from qa@net­bean­s.org: “We'd like to in­form you that the fol­low­ing is­sues you re­port­ed have been ad­dressed in the new version” and list­ing four bugs I’d filed. What a nice touch.
[3 comments]  
JRuby 1.1 · I see the JRuby­ists have shipped JRu­by 1.1. I in­creas­ing­ly think JRu­by is in­ter­est­ing and im­por­tant as a test case, even if you don’t hap­pen to care in the slight­est about Ru­by or Rail­s ...
[7 comments]  
Upcoming Gig: J1 Blogger · There’s a re­al­ly strict lim­it on the num­ber of JavaOne pass­es for Sun em­ploy­ees. I can usu­al­ly man­age to score one, but that’s one that some­one else isn’t go­ing to get. But I’ve not­ed with ap­proval that there are press pass­es for suc­cess­ful tech­nol­o­gy blog­ger­s; I’m one of those so I ap­plied, and now some­one else can get that pass. I’ve missed two J1’s in a row, so I’m look­ing for­ward to get­ting back in­to that cul­ture a bit. Now, can I ac­tu­al­ly dig up some news?
 
Django on Jython · It’s start­ing to hap­pen. There’s a long way to go be­tween suc­cess­ful­ly ex­e­cut­ing a bit of Rails and ac­tu­al­ly mak­ing the suck­er run use­ful­ly, as the JRu­by guys will tell you. But speak­ing of JRuby, there are some eerie sim­i­lar­i­ties: a language-platform project that was promis­ing, then drift­ing, now re­vi­tal­ized. The ecosys­tem gets more in­ter­est­ing all the time. [Up­date:] Frank Wierzbic­ki re­ports that Jython is rockin’ & rollin’, it’s not just Djan­go. Good stuff!
 
On Closures · I start­ed out ner­vous with the idea of adding clo­sures to Java, and I think I’ve slid firm­ly in­to the “contra” cam­p. One rea­son is that it seems in­creas­ing­ly a bad idea to add any­thing to the Ja­va lan­guage. On a re­lat­ed sub­jec­t, my brief so­journ in Ruby-land has changed my think­ing about clo­sures en­tire­ly ...
[19 comments]  
Tab Sweep — Tech · Shed­ding, TDD, Java, and keys ...
[5 comments]  
New NetBeans · The bits were post­ed ear­li­er to­day. NetBeans 6.0 is live ...
[1 comment]  
Bytecodes! · Way back in 2004, when we had the first Java/DynLangs sum­mit, one of the DynLangs guys’ gripes was that byte­codes were too hard to gen­er­ate. They still are; but check out Charles Nutter’s Byte­code Tools in Ruby: A Low-level DSL; is it just me, or is that re­mark­able? I have tend­ed to be a bit less im­pressed than your av­er­age Ru­by fan­boy at a bunch of method calls sans paren­the­ses claim­ing to be a “DSL”. But man, that looks slick.
 
NB6b1 · Which is to say, NetBeans 6.0 Be­ta 1 is out. Looks pret­ty good so far, they even re­vised the Borg Cube lo­go. I’ve got a cou­ple tabs with .rb files open, and three more that end in .h and .c. I un­der­stand it can be used with Ja­va too ...
[15 comments]  
GlassFish V2 · It’s out to­day. Now, I don’t work with app servers that much, and I’ve hard­ly ev­er touched GlassFish. But this is in­ter­est­ing any­how, for two rea­son­s: First, GlassFish is an ex­am­ple of a soft­ware prod­uct that was strug­gling in the mar­ket, and is do­ing im­mense­ly bet­ter af­ter mov­ing from closed to Open Source. Smells like the fu­ture to me. Se­cond, check out that launch point­er: a blog clus­ter, with the mar­ket­ing ba­sics and a ton of highly-technical de­tail. I just don’t think there’s any oth­er sen­si­ble way to launch a mod­ern soft­ware pack­age whose users are de­vel­op­er­s.
[3 comments]  
Tab Sweep — Tech · There were a few here that I want­ed to do a whole piece about, but I just got­ta clear some space on these deck­s. To­day we have push­ing and pulling and queue­ing and Ruby.next and Ja­va hate and PHP-vs.-Rails. What’s not to like? ...
[9 comments]  
Ruby Glee · Now, this would be a red-letter day. I was chas­ing a weird Ape bug, and I found the prob­lem: atom­URI#ab­so­l­u­tize was re­turn­ing a URI not a string (and by the way, why doesn’t URI of­fer String meth­ods like in­dex and =~!?! But I di­gress.) Any­how, I moaned, think­ing “Crap, that’s used ev­ery­where, what am I gonna break?” What I need­ed was “Find Usages”... Hah! I’d re­cent­ly grabbed a new NetBeans 6 pre-release (the 070810 build of M10) and Tor’s been do­ing some heavy chest-beating re­cent­ly. Here goes with the right-click ...
[9 comments]  
Tab Sweep — Tech · To­day we have some Atom­ic Ap­ple love, iPhone Web friend­li­ness, Re­laxNG praise, and JVM Lan­guage widen­ing ...
[6 comments]  
Tab Sweep — Tech · To­day we have Ja­va yield­ing, thread rant­ing, REST lec­tur­ing, and iden­ti­ty in­sight ...
[6 comments]  
Big NetBeans · I was chat­ting with one of the NetBeans guys the oth­er day and he said “BTW, it’s up to 6.7 mil­lion lines of code now”. Gack. Here is their pub­lic sched­ule. Wish them luck­... the thought of man­ag­ing a code-base like that makes my flesh crawl.
[2 comments]  
Tab Sweep · Per­haps a lit­tle more all-over-the-map even than is usu­al: GPLv3 clar­i­ty, Func­tion­al Pearl­s, raina bird-writer, Ja­va cred­it­s, frame­work pro­gram­mer­s, and hack­ing my Canon ...
[4 comments]  
The London Illustrated News · I spent the week in Lon­don. Fun was had, pic­tures were tak­en, I learned things. Here­with il­lus­trat­ed notes on trans­porta­tion, en­er­gy, fi­nance tech­nol­o­gy, busi­nesslike drink­ing, women’s cloth­ing, Groovy, ex­cel­lent lamb-chop cur­ry, and a round red anoma­ly ...
[8 comments]  
Ruby Servlet Dispatching · I’m wiring the Ape up so I can run it with JRu­by in a servlet in a re­al Ja­va App Server, and while Marcin Mielżyński’s first-cut RubyServlet works fine, I sus­pect it’s not the on­ly ap­proach to dis­patch­ing. So I’m do­ing some re­search and think­ing, and I’ve col­lect­ed it here for any­one who cares ...
[4 comments]  
JRuby Servlets · I got the Ape run­ning on JRu­by and wired Jing back in, which is re­al­ly use­ful (some of the so-called Ser­vice Docs out there are ca­nine fe­cal mat­ter). I was pret­ty damn im­pressed when the now-2400+ lines of Ape code to­tal­ly just worked in JRuby. Then, I was ir­ri­tat­ed by the re­al­iza­tion that my prim­i­tive CGI set­up for run­ning the Ape is just not gonna fly if I have to start up a JVM and JRu­by for each re­quest. So I thought “this is what servlets are for, right?” and the good news is that It Can Be Done ...
[3 comments]  
Another Blow to Emacs · I’ve been watch­ing Tor Nor­bye grind­ing away on NetBeans 6, and couldn’t wait any more, so I went and down­load­ed a dai­ly build, and it seems to kin­da work. Up till now, all my Ru­by work has been in Emac­s, but the NB6 pre-pre-alpha trumps it ...
[15 comments]  
Gosling, O.C. · James has been ap­point­ed to the Order of Cana­da, and about bloody time. Not on­ly is this well-deserved, but as far as I know, it’s the first time that a com­put­er tech­nol­o­gist has made it in. I have noth­ing against the dancers and in­sur­ance ex­ec­u­tives and phi­lan­thropists and hock­ey play­ers cur­rent­ly in­hab­it­ing the Order, but the con­struc­tion of the fu­ture is in some large part in the hands of the en­gi­neer­s; and this needs bet­ter recog­ni­tion.
 
SOA, REST, Java · What I usu­al­ly do in this space is grum­ble and whine about SOA & SOAP and so on. To­day, let’s start with a laugh, in­stead. But ac­tu­al­ly, there’s news; the Ja­va tribe has de­cid­ed to take REST se­ri­ous­ly, see JSR 311 and, for some more point­er­s, Eduardo’s write-up. I haven’t had time to do a deep-dive, but I’m re­as­sured by the pres­ence of Marc Hadley A.K.A. the WADL guy; and it looks that there will be oth­er re­al ex­perts at the table. On the oth­er hand, El­liotte Rusty Harold emits an ex­tend­ed snarl. (Sam­ple: “I hope we can de­rail this completely...”) Hey El­liot­te, I guess mak­ing friends and in­flu­enc­ing peo­ple is for loser­s, right? The proof of the pud­ding, ob­vi­ous­ly, is in the eat­ing, but the fact that this dis­cus­sion is hap­pen­ing has to be a good thing ...
[5 comments]  
Groovy Flickr Escape Hatch · In the mail from Man­ning this week, Groovy in Ac­tion, nice­ly timed to fol­low up on the 1.0 re­lease. I still haven’t made up my mind about Groovy, so I’m watch­ing the com­mu­ni­ty with in­ter­est. For ex­am­ple, Alex Brown’s Bulk Pro­gram­mat­ic Con­ver­sion of Pho­tos from flickr to SmugMug. There are a bunch of in­ter­est­ing is­sues all mixed up here: Yahoo’s iden­ti­ty ploy, wildly-contrasting Web pro­gram­ming in­ter­faces, choos­ing from the lengthy list of Ja­va XML-processing al­ter­na­tives; and of course, watch­ing Groovy at work. I have to say the source code is re­al easy to read; odd­ly, what it makes me wish for is regex lit­er­als in Java. Hm­m, it’s not ob­vi­ous to the ca­su­al eye when you de­clare vari­ables and when you don’t; I’m sym­pa­thet­ic to the optional-declaration idea though. I guess I’ll have to have a look at the book; it was crack­ing the Pick­axe book’s cov­ers that dropped me on­to the slip­pery Ru­by slope.
[1 comment]  
JRuby January · In this month’s JRu­by news, Ryan To­mayko goes all vi­sion­ary, Charles Nut­ter pon­ders In­vokeDy­nam­ic, and Nick Sieger’s a com­mit­ter. I par­tial­ly dis­agree with Ryan’s point #3. My im­pres­sion has been that the av­er­age Ja­va pack­age is at least as well-maintained as in any oth­er lan­guage you care to name, and bet­ter than some (but he’s right, of course, that the main­te­nance ac­tiv­i­ty needs start man­i­fest­ing quick­ly via your lo­cal apt or yum or what­ev­er). Al­so, Ryan rec­om­mends Ru­by when “where read­abil­i­ty and main­tain­abil­i­ty are more im­por­tant than per­for­mance and reuse”. Uh, isn’t read­abil­i­ty a re­al­ly im­por­tant fac­to­ry in re-usability? Which means that Charles should be (and prob­a­bly is) wor­ry­ing about call­ing Ru­by code from Java, not just the oth­er way. Any­how, JRuby’s a hot­ter and hot­ter area. I watch the JRu­by de­vel­op­er newslist, which I don’t rec­om­mend un­less you’re an en­thu­si­ast; on a good day Ola Bi­ni alone can sat­u­rate the av­er­age in­box.
[1 comment]  
Get Those J1 Papers In · The Ja­va One Call for Papers clos­es this Fri­day the 15th, so buck­le down and get those sub­mis­sions in. If you’ve nev­er been to a Ja­va One you should find a way to go some­time, it’s a unique­ly high-intensity ex­pe­ri­ence. The sug­gest­ed top­ics for this year are in­ter­est­ing, in par­tic­u­lar The Next Gen­er­a­tion Web, Tools and Lan­guages, and Open Source and Com­mu­ni­ty Devel­op­ment.
 
Java Thunder · The Ja­va ecosys­tem is a news fac­to­ry these days. Here­with a few words on Ja­va SE 6, JRu­by 0.9.2, and Groovy 1.0 RC1 ...
[5 comments]  
Intel Java Voodoo Huh? · Check out Intel's new in­struc­tions to Rock­ton round the clock from the In­quir­er. This is con­sis­tent with what Geir Mag­nus­son said in his (very good) OSCON pre­sen­ta­tion; that In­tel might like to load a cus­tom JVM with se­cret code that took ad­van­tage of their in­side knowl­edge of the sil­i­con, so Ja­va would run bet­ter on In­tel; one rea­son they might have pre­ferred Apache to GPL li­cens­ing for the Sun Ja­va code. Me, I’m puz­zled. If there are spe­cial in­struc­tions to make Ja­va byte­codes (or .NET CLR code) run fast, uh, how are they go­ing to keep them se­cret, and why wouldn’t they end up in ev­ery JVM and CLR im­ple­men­ta­tion? And why wouldn’t this be good for In­tel? There are dis­as­sem­blers and so on, you know, and plen­ty of hack­ers who are ac­com­plished at pick­ing apart x86 bi­na­ries. Maybe there’s some­thing else we don’t know. [Up­date: Check the com­ments. That In­quir­er ar­ti­cle is from way last year, and Geir Mag­nus­son says I’m all wrong about In­tel. So maybe there’s no sto­ry here.]
[19 comments]  
The Week After · A few brows­er tabs have built up with follow-ons from last week’s Ja­va source code news. The best sin­gle day-after piece is Mark Reinhold’s There’s not a mo­ment to lose!; I was on that IRC chan­nel for the “Vijay is on it” mo­men­t. Mark al­so points at Ja­va Posse cov­er­age. I lis­tened to it and ten min­utes in was get­ting du­bi­ous, there wasn’t much new news. But about halfway through they start­ed get­ting tech­ni­cal; as in, is build­ing the JDK more like build­ing Lin­ux (easy) or like build­ing OpenOf­fice.org (hard)? Lis­ten for de­tail­s. Then there’s an in­ter­view with me in Eclipse Magazine. Two amus­ing points: when Se­bas­tian Meyen sent me the ques­tion­s, he men­tioned half a dozen dif­fer­ent web sites and mag­a­zines they might run it in, but not Eclipse mag (Se­bas­tian, it’s just fine); al­so, con­trast the fan­ci­ful ar­ti­cle ti­tle and my an­swer to the community-models ques­tion. Speak­ing of Eclipse and snick­er­s, there’s Mike Milinkovich telling In­for­ma­tion Week that we made the open-source move in re­ac­tion to Har­mo­ny. Look, Eclipse is an im­por­tant part of the Ja­va ecosys­tem, and Har­mo­ny is an in­ter­est­ing project with re­al­ly smart peo­ple, but gimme a break. You might want to look past the con­spir­a­cy the­o­ries and in­dus­try tec­ton­ic­s, and con­sid­er a sim­pler ex­pla­na­tion. Mov­ing on: I took my dai­ly glance at Slash­dot to­day and damn if there isn’t a great big honk­ing get-the-Java-source-code ad all up and down the right side­bar. I would nev­er have thought of do­ing that, and I don’t claim to un­der­stand the ad­ver­tis­ing strat­e­gy or tac­tic­s; but see­ing it made me hap­py. Clos­ing note: You have no idea how much work this has been, for a whole lot of our best peo­ple; my hat is off to ’em.
 
The Morning After · Wel­l, that was quite a par­ty. Here­with a few notes on com­mu­ni­ca­tion­s, re­ac­tion­s, and names ...
[6 comments]  
Java Is Free · When I took the job at Sun in ear­ly 2004, I had a long talk with John Fowler, about this blog among oth­er things. John said: “You might end up hap­pi­er if you don’t blog about open-sourcing Java.” That was then. Today’s sto­ry is sim­ple: Un­mod­i­fied GPL2 for our SE, ME, and EE code. GPL2 + Class­path ex­cep­tion for the SE li­braries. Javac and HotSpot and JavaHelp code drops to­day. The li­braries to fol­low, with pain ex­pect­ed fight­ing through the en­cum­brances. Gover­nance TBD, but ex­ter­nal com­mit­ters are a de­sign goal. No short-term changes in the TCK or JCP. There are a ton of pre­sen­ta­tions and an (ex­cel­len­t) FAQ and so on, all to show up at sun.­com/open­source/­ja­va some­time in the next few hours. I want­ed to add a cou­ple of re­marks on ar­eas that stuff doesn’t high­light ...
[16 comments]  
Upcoming Gig: Second Life · Hey, my first Me­ta­verse ap­pear­ance. That’s this com­ing Mon­day 13th at 1PM Paci­fic. Jeff Barr tells me to prac­tice my ges­tures. I’m frankly very ner­vous.
[3 comments]  
That License Thing · CNET says Jonathan says CDDL. Slash­dot says CRN says GPL. Who ya gonna be­lieve? (This is fun!)
 
Erroneous Ministerial One · Here­with my oc­ca­sion­al romp through the built-up brows­er tab­s. Item (se­ri­ous): In The ‘Next’ Ja­va, Joe Gre­go­rio says some Real­ly Smart Things about lan­guages in gen­er­al and Ja­va in ar­tic­u­lar. Item (se­ri­ous): At Busi­ness Week, Stephen Baker’s Writ­ing for an au­di­ence of one says some­thing gen­uine­ly new (hard, these days) about blog­ging. Item (in­ter­est­ing): My new Sam­sung is a pret­ty cool phone, but there are a few ir­ri­tants. It turns out that some­one called RedIpS has fixed them. I just bought a flash­ing ca­ble on EBay; I won­der if I’m go­ing to be break­ing any laws? Item (not se­ri­ous): SOA Facts. Item (puz­zling): Some guy named Tim Bray seems to be in trou­ble in Chi­na; this ar­ti­cle pro­vid­ed the ti­tle above. I hope Mr. Bray gets out OK.
[1 comment]  
Upcoming Gig: W-JAX · I thought I might make it through 2006 with­out cross­ing an ocean, but I just signed up for a keynote at W-JAX in Mu­nich in Novem­ber. I’ve nev­er been to this con­fer­ence, but my Sun col­leagues say good things about it.
 
The Ruby Ape Diaries · I took tons of notes while I was work­ing on the Ape. I was go­ing to hold off pub­lish­ing till I re­leased the code, but once I ac­tu­al­ly launched the for­mal Sun pro­cess to do that, I dis­cov­ered that it can take two or three week­s, and so I de­cid­ed to go ahead while it was fresh in my mind. Un­for­tu­nate­ly, the piece pret­ty soon had fif­teen dif­fer­ent sec­tions and would have been too long for mere mor­tals with jobs to read, and fur­ther­more, the sec­tions didn’t have much to do with each oth­er, and there just aren’t that many peo­ple on earth who’d be in­ter­est­ed in all of them. Some of them look close at the is­sues of mak­ing Ja­va and Ru­by get along, while oth­ers wal­low in duck-typing per­ver­si­ty and fin­er points of Ru­by style. So I’ll keep them short and do one a day (or so) for the next week (or so) and fill a ta­ble of con­tents in here.
I. Why JRuby?
II. Back to Ru­by
III. Quack Like a URI
IV. TMTOWTDI
V. << !!
VI. Ja­va APIs from JRu­by
VII. J?REXML
VIII. Sur­face Phenom­e­na
IX. Those Li­braries
X. Mak­ing Markup
XI. Where To?

 
RAD XI: Where To? · [RAD stands for Ru­by Ape Diaries, of which this is part XI.] I think this con­cludes the Diaries, al­though on­go­ing al­ready has a cou­ple of five-part trilo­gies. The Ape works rea­son­ably well and is get­ting quite a bit of use; Sam Ru­by has con­vinced me that, rather than whit­tle away at the to-do list, I ought to fig­ure out a way to build a large cat­a­log of prob­lems and edge cas­es, test-suite style, in such a way that you can add new ones with­out writ­ing code. I haven’t yet fig­ured out how to do it. My Ru­by is still not ful­ly id­iomat­ic but it’s bet­ter than pidg­in, and there’s a re­al pos­si­bil­i­ty that the next time I get my back to a wall and need to do some­thing to a few mil­lion lines of text right now, I may not use Per­l. It should be rea­son­ably ob­vi­ous that I like Ruby. Stil­l, there are flies in the oint­men­t, worms in the ap­ple, fake jew­els in the shop win­dow ...
 
RAD X: Making Markup · [RAD stands for Ru­by Ape Diaries, of which this is part X.] If you’re writ­ing Web app­s, and even if you’re one of the few who isn’t, you’re prob­a­bly go­ing to have write code to gen­er­ate markup, HTML or XML. His­tor­i­cal­ly, pro­gram­mers have found this dif­fi­cult, and thus there are lots of li­braries that try to ab­stract markup away be­hind code (for ex­am­ple, my own Genx). There are tricky is­sues and trade-offs here, and Ru­by throws them in­to pret­ty sharp fo­cus ...
 
RAD IX: Those Libraries · [RAD stands for Ru­by Ape Diaries, of which this is part IX.] Ruby’s de­bug­ging fa­cil­i­ties, com­pared to what IDE users like me are used to, are, well... sin­cere. At one point dur­ing the Ape work, I had a bug that was re­al­ly driv­ing me crazy. The symp­tom was that my HTTP in­ter­ac­tion with the serv­er would just freeze up, and I couldn’t spot the pat­tern be­hind it. It’s a fact of protocol-testing life that this par­tic­u­lar kind of shit hap­pen­s. Some­times you’re re­duced to de­bug­ging with print state­ments, and I was. But af­ter a while they weren’t help­ing me, I was call­ing Net::HTTP#s­tart on an apparently-valid con­nec­tion and then... noth­ing. Even­tu­al­ly, I was driv­en to look­ing in the li­brary source, net/http.rb. Hey, it was easy to un­der­stand! (Have I talked about Ru­by and read­abil­i­ty be­fore?) I could see where my re­quest was go­ing, but I couldn’t see how it could go wrong. Wel­l, this is a dev ma­chine, and Real Men de­bug with print state­ments. So in they wen­t... right in­to the Ru­by dis­tro li­braries, I mean. And I ran it again. On­ly took a cou­ple of min­utes to ze­ro in the prob­lem; in this case, a JRu­by bug. I’m not sure what the les­son is... but the code spelunk­ing was fright­en­ing­ly easy. This is not typ­i­cal of oth­er peoples’ HTTP li­braries; I have bit­ter mem­o­ries of bash­ing my head to a bloody pulp against LWP back in the last mil­len­ni­um. Did I men­tion read­abil­i­ty? [Ed. Note: You’ll be hap­py to hear that there are on­ly a cou­ple more RAD en­tries in the pipeline, then I’ll be done.]
 
RAD VIII: Surface Phenomena · [RAD stands for Ru­by Ape Diaries, of which this is part VIII.] Pro­gram­ming is sup­posed to be an en­gi­neer­ing dis­ci­pline, or maybe a branch of math­e­mat­ic­s. But, as Don Box mem­o­rably said: “the on­ly peo­ple who should do it are those who can't not do it”, call­ing us “those few peo­ple who ab­so­lute­ly must live in the world of ex­e­cutable abstractions”. One con­se­quence is that we’re pas­sion­ate about the con­tent and the for­m. Here­with some re­marks on ap­pear­ances; the way Ru­by code looks and how you store it and so on; is­sues as im­por­tan­t, per­hap­s, as any oth­er ...
 
RAD VII: J?REXML · [RAD stands for Ru­by Ape Diaries, of which this is part VII.] In na­tive Ruby, the de­fault way to do XML pro­cess­ing is via the REXML li­brary. In JRuby, you have an­oth­er de­fault choice—Java’s built-in XML APIs. Nei­ther op­tion is that great. Stil­l, there are some rea­son­ably safe ways to get the job done. I wrote some glue code called JREXML to make the Ja­va APIs look more like REXML, which forced me to think about this stuff per­haps more than is en­tire­ly healthy ...
 
RAD VI: Java APIs from JRuby · [RAD stands for Ru­by Ape Diaries, of which this is part VI.] The rea­son I first built the Ape in JRu­by was so I could get at all those nice Ja­va APIs, and that turned out to be a good rea­son. Of course, there is a bit of im­pe­dence mis­mach, and I end­ed up writ­ing some glue code. I kind of sus­pect that, should JRu­by catch on, there’s go­ing to be scope for quite a bit of this glue-ware. This frag­ment is just a few ex­am­ples of the gen­re, to pro­vide ex­am­ples and per­haps pro­voke thought ...
 
RAD V: << !! · [RAD stands for Ru­by Ape Diaries, of which this is part V.] If you look at Ru­by code, you keep see­ing this lit­tle two-character mo­tif <<, and maybe ev­ery­one else al­ready knew about this, but it sure feels like mag­ic to this farm boy from the Prairies. Bonus: Lisp spec­u­la­tion ...
 
RAD IV: TMTOWTDI · [RAD stands for Ru­by Ape Diaries, of which this is part IV.] That glob of let­ters in the ti­tle stands for “There’s More Than One Way To Do It”, and it comes from Perl cul­ture. It is a dis­tin­guish­ing fea­ture of Perl that if there’s some­thing you need to do, not on­ly does Perl have a way to do it, it has lots of dif­fer­ent ways. Perl’s le­gion of evan­ge­list­s, led by Lar­ry Wal­l, ar­gue that this is an ad­van­tage. Lar­ry has a com­pelling ar­gu­ment by par­al­lel with lin­guis­tic­s; nat­u­ral lan­guages usu­al­ly have many ways of say­ing any­thing that’s worth say­ing. Not ev­ery­one agrees that this is a virtue; in par­tic­u­lar, Python­istas have his­tor­i­cal­ly grum­bled. Ru­by seems to fall in­to the Perl cam­p. And now, dear read­er­s, I must con­fess to a bit of du­plic­i­ty. When I wrote RAD III: Quack Like a URI, I knew that my ex­am­ple was per­haps not the purest pos­si­ble ex­am­ple of duck typ­ing, but my hid­den agen­da, name­ly gath­er­ing ma­te­ri­al for a TMTOWTDI es­say, worked out well ...
 
RAD III: Quack Like a URI · [RAD stands for Ru­by Ape Diaries, of which this is part III.] This lit­tle il­lus­tra­tion of a pro­gram­ming id­iom is sole­ly de­signed to hor­ri­fy new­com­ers from the Ja­va world, and will look mun­dane to ex­ist­ing Ruby­ist­s. Prob­lem: I want to check a URI to make sure it’s ap­pro­pri­ate for use in the Atom Pro­to­col, and if not, re­port a co­her­ent er­ror mes­sage ...
 
RAD II: Back to Ruby · [RAD stands for Ru­by Ape Diaries, of which this is part II.] As of to­day the Ape is on Ruby, not JRuby; read on for the sad sto­ry and the Ape’s ad­dress ...
 
RAD I: Why JRuby? · [RAD stands for Ru­by Ape Diaries, of which this is part I.] To build a val­ida­tor you need an HTTP en­gine and an XML parser, both of which Ru­by is ad­ver­tised as hav­ing. JRu­by, when I first took this on, was as at re­lease 0.9.0 and had plen­ty of rough edges. But I de­cid­ed to use it any­how ...
 
Java.net Terms of Use · Some­times we make pro­gress. Way last year, I got email from Nor­bert Lin­den­berg, grous­ing about the Terms of Use on Java.net; they were full of scary lan­guage about how you and your em­ploy­er had to in­dem­ni­fy Sun and “its busi­ness partners” against any­thing bad that might hap­pen with any con­nec­tion to any­thing you did, and about how you were sign­ing up for the similarly-scary sun.­com terms of use. So I went pok­ing around and asked the Java.net peo­ple why they sound­ed un­friend­ly, and they said, “Hmm, let’s talk to the lawyers”, who said, more or less, “If there are good busi­ness rea­sons to re­lax this a lit­tle, well OK then.” It turns out we’re part­ner­ing on this stuff with O’Reilly and Col­labNet, so there were a lot of mov­ing parts in­volved; a whole bunch of peo­ple had to pitch in. I didn’t do much of the work, so I may have this wrong, but from where I sit it looks like Mar­la Park­er and and Cliff Allen de­serve spe­cial cred­it. Any­how, as of yes­ter­day, things are bet­ter. Check it out: the new Java.net Web­site Terms of Use. Still not light read­ing, of course, but not like­ly to cause po­ten­tial con­trib­u­tors any heart­burn.
 
That Open Source Thing · We haven’t been say­ing much since Ja­va One, so I thought I’d men­tion that I spent some time this week in the in­ter­nal work pro­cess around Ja­va and Open Source, and that it’s mov­ing along nice­ly. As of now, I’m re­al­ly op­ti­mistic that it’ll turn out well for the com­mu­ni­ty and for us too.
 
Go Visit Phobos · Hey, I see that Rober­to has pushed some ac­tu­al soft­ware bits to the Pho­bos site. Pho­bos is a server-side script­ing frame­work that runs on the Ja­va plat­for­m. Right at the mo­men­t, it’s all JavaScrip­t, but the hooks are there to wire in oth­er lan­guages. I’ve been a ma­jor Pho­bos cheer­lead­er for a year or more in­side Sun, but my on­ly ac­tu­al con­tri­bu­tion is the as­tro­nom­i­cal lo­go. There were peo­ple here who were con­sid­er­ably am­biva­lent about show­ing Pho­bos to the world, and for good rea­son; they asked “What is Pho­bos, actually?” and won­dered about its re­la­tion­ship to the rest of GlassFish. I’m not 100% sure what Pho­bos is my­self, but it’s in­ter­est­ing as a thought ex­per­i­men­t, show­ing that you can do the kind of lightweight zero-deployment things that peo­ple don’t think Ja­va does. The Red­dit/Do­jo mashup de­mo is se­ri­ous­ly cool. Fi­nal­ly, while the server-side JavaScript no­tion is pret­ty weird, go have a look at the code; writ­ing an AJAX app all in one lan­guage is se­duc­tive on the face of it.
 
Those Accents · I al­ready wrote about how the NetBeans and EE guys are learn­ing lessons from Rail­s. But when Ro­man Strobl asked me to look at his lat­est on in­stant per­sis­tence, I re­al­ized that they’ve learned the re­al­ly im­por­tant lesson; it’s all about instant-app screen­casts fea­tur­ing guys with cute Euro­pean ac­cents. Dig the way Ro­man says “scaffolding”. Clear­ly Djan­go, Grail­s, and the oth­er Web-framework wannabes need to go re­cruit some ap­peal­ing Euro­pean­s... now here’s a rad­i­cal idea: how about a wom­an? [Up­date: Djan­go has a Eurowe­b­cast too!]
 
OSS Java · Wel­l, the re­ac­tion to the state­ment on an OSS li­cense for the Sun Ja­va SE im­ple­men­ta­tion has not ex­act­ly been a cho­rus of huz­zah­s; it’s ranged from “You don’t re­al­ly mean it” to “You should have done it years ago” to “lamerz suxx0r neen­er neener”. The peo­ple work­ing through the li­cense and com­mu­ni­ty is­sues need to be aware they’ll be deal­ing with un­re­lent­ing hos­til­i­ty from their au­di­ence. There’s lots of his­to­ry here, most of which I don’t know, but no­body seems sur­prised at all this. I have to say, though, the con­trast be­tween all that nas­ti­ness and the big hap­py com­mu­ni­ty glow at last week’s Ja­va One was pret­ty stark; who are Java’s friends again? That aside, I’m still pret­ty star­tled about the re­ac­tion to the DLJ an­nounce­ment. I would have thought that mak­ing it a lit­tle less painful for GNU/Lin­ux users to in­stall Ja­va would gen­er­al­ly be re­gard­ed as a good (not huge, but good) thing—I know that Si­mon Phipp­s, Mark Shut­tle­worth, Rich Sand­s, and a bunch of oth­er peo­ple worked damn hard on it—but in­stead (see Si­mon), it pro­voked a load of vit­ri­olic trash talk. I’m dis­ap­point­ed.
 
Continuations and GUIs · Gi­lad Bracha asks Will Con­tin­u­a­tions Con­tin­ue? in an ex­cel­lent es­say about whether the JVM needs con­tin­u­a­tion­s. Per­son­al­ly I have nev­er found them id­iomat­ic so I have no quar­rel with Gilad’s re­luc­tance, but I en­tire­ly dis­agree with the line of ar­gu­ment he us­es to back it up. He points out that Web frame­works like Sea­side make ex­cel­lent use of con­tin­u­a­tion­s, but ar­gues that that’s a red her­ring be­cause the cur­rent style of Web-human in­ter­ac­tion is a tem­po­rary anoma­ly and “the fu­ture of Web apps will be different”, with AJAX sign­post­ing the way. This no­tion, that the Web GUI is in­suf­fi­cient­ly in­ter­ac­tive and we need some­thing richer, is wide­ly held among de­vel­op­ers and al­most nev­er among ac­tu­al users of com­put­er­s, and it’s en­tire­ly wrong. I can re­mem­ber when peo­ple were forced to use com­piled Win­dows and X11 ap­pli­ca­tion­s, and most of them were ex­treme­ly bad be­cause it’s re­al­ly hard to de­sign a good in­ter­ac­tive UI; when the Web came along, more or less ev­ery­one aban­doned those UIs in fa­vor of the We­b, al­most in­stant­ly and with shrieks of glee. Yes, Web UIs are dras­ti­cal­ly con­strained, of­fer a pauci­ty of con­trol­s, and en­force a bru­tal­ly lin­ear con­trol flow; and these are good things. I re­mem­ber, in the ear­ly days, peo­ple say­ing “Once you know how to use one Win­dows ap­p, you know how to use them all”. Ha ha ha. But you know what? Once you know how to use a browser, you are well on the way to be­ing able to use most Web app­s. The best AJAX apps are still very Web-like (as in, the Back but­ton al­ways work­s); but they’re faster and more re­spon­sive and nicer to look at. The worst AJAX apps are like bad Nineties VB. Hav­ing said all that, I sus­pect that Gilad’s right about con­tin­u­a­tion­s. [Up­date: More good stuff on the sub­ject from Don Box and (e­spe­cial­ly) David Meg­gin­son. Plus a few re­mark­s, in a su­pe­ri­or tone, along the lines of “That sil­ly man, can’t he see that users re­al­ly want more com­plex us­er interfaces?” Al­l, of course, from de­vel­op­er­s.] [Fur­ther: Some pro-complex-interface re­marks that are ac­tu­al­ly co­her­ent from Si­mon Brock­le­hurst (but Si­mon, a good brows­er should pre-fill forms for you and get it right al­most all the time; Sa­fari does). And there’s more sol­id think­ing in HREF Con­sid­ered Harm­ful; I know who writes it but he seems to be try­ing to hide his iden­ti­ty, hm­m.] [Hrumph. Cur­tis Poe says I’m a Sapir-Whorf vic­tim, I don’t feel the need for con­tin­u­a­tions be­cause I’ve spent too many years us­ing pa­thet­ic, im­pov­er­ished lan­guages like C and Java. Wel­l, OK then; I promise to find a way to squeeze ’em in­to my Ruby-based com­ment sys­tem.]
 
On Java One · I flew out Thurs­day evening, and I’m sit­ting here mid-Saturday, still not 100% re­cov­ered. If you make your liv­ing in a way that in­volves soft­ware de­vel­op­men­t, it’s a thing you ought to take in some­time. Here­with my take-aways ...
 
Java One Day Two Podcast · By Day Two, which is Day Three if you start count­ing from NetBeans day, everyone’s start­ing to look a lit­tle worn down. Sleep is for weak­lings; last night I went to a dynamic-languages BOF that start­ed at 10:30 and there had to be 100 peo­ple there. Same ques­tion­s, 1:25, 87.5M ...
 
Java One Day One Podcast · Next day, same ques­tion­s: “Who are you and what do you do?”, “What’s great?”, and “What sucks?”; but re-sequenced. This one’s on­ly one minute 20, and a mere 85M in size ...
 
Java One Day Zero Podcast · I ac­cost­ed a bunch of peo­ple and asked them three ques­tion­s: “Who are you and what do you do?”, “What’s great?”, and “What sucks?” Here­with the re­sult­ing video pod­cast, one minute 45 sec­onds in length. It start­ed out high-def and even though it’s on­ly 400x225, it looks pret­ty de­cent for Web video. There’s a cost: it’s about 93M in size. [Sev­er­al have writ­ten me to point out that this is in­sane­ly large. Well yes, I know. I won’t com­pro­mise on qual­i­ty for the same rea­son that I won’t com­pro­mise on JPEG set­tings for the im­ages I pub­lish here; but I’ve seen some sug­ges­tions for how I might save space with­out sac­ri­fic­ing it.] ...
 
Q&A · In the open­ing ses­sion at NetBeans day, Jonathan Schwartz said a few words and then brought Rich Green, our new soft­ware supre­mo, up on stage. After say­ing some nice things about Rich, Jonathan pro­posed that they do a Q&A, with Jonathan ask­ing the ques­tion­s, say­ing a “I’ll sim­u­late a developer”. His first ques­tion was “So Rich, are you go­ing to open-source Java?” Rich start­ed with “Well, why not?” But then he gave what I thought was a re­al­ly trans­par­ent brain-dump on the in­ter­nal de­bate here at Sun, which is along the lines of “Open source good, com­pat­i­bil­i­ty es­sen­tial”. So it’s go­ing to take a lot of work to fig­ure out the sto­ry around com­pat­i­bil­i­ty and com­mu­ni­ty, and that’s go­ing to re­quire plen­ty of in­put from out­side Sun. But then Rich said it again: “Why not?”
 
Panic Panic · Urgh, I got email from the Ja­va One peo­ple in­form­ing me of my (lousy, oh well) spot on the sched­ule. I got more email telling me that the $200 early-bird dis­count ends this Fri­day. I got more email, a po­lite query: “Where are your slides?” Argh, the work is far from done and the con­fer­ence feels like to­mor­row and I have many days of meet­ings be­tween now and then. Par­don me if I’m a lit­tle jit­tery and start at sud­den nois­es for the next few week­s. On the up­side, the JRu­by peo­ple will be speak­ing, and there’s go­ing to be a dynamic-languages BOF. And there’s go­ing to be an­oth­er NetBeans day; I’m not on that agen­da, thank good­ness, so I can just go and hang out.
 
Picture Frames · On this va­ca­tion, giv­en that Lau­ren is sev­en months preg­nan­t, we picked some­thing that was low-stress and low-adventure (s­tart­ing with the lo­ca­tion; there’s a di­rect Vancouver-to-Kona flight). I like loung­ing by the pool and sam­pling the lo­cal bev­er­ages as much as any­one, but with a deadline-free week, I al­so found time for some recre­ation­al pro­gram­ming. The re­sult is some­thing I call “Framer”, which gen­er­ates bor­ders and/or drop shad­ows for im­ages in most pop­u­lar for­mat­s. It writes PNGs with vari­able al­pha chan­nel so the drop shad­ows will look OK on any col­or back­ground. It has some op­tions and you’re free to use it, but it’s not problem-free and un­less there’s a lot of in­ter­est I’m not go­ing to open-source it. Il­lus­trat­ed with groovy Big Is­land sun­set pho­to­s ...
 
JDiskReport · Hey, this is cool; it’s a lit­tle doo-hickey that draws pie charts and graphs of what you’ve got on your disk. I won­der on what set of hard­ware/OS com­bi­na­tions the web-start Just Works like it did on my Mac? The pie-charts of my life were so cool I had to pub­lish a few. And I turned up a re­al prob­lem, too ...
 
Programming Languages · I fol­lowed a point­er from Bill de hÓra this morn­ing and it cost me an un­planned hour while the rest of the fam­i­ly slep­t, on the sub­ject of pro­gram­ming lan­guages. If you care about such things, stop read­ing here or you’re about to get stuck too; but that’s be­cause it’s good stuff. Bill point­ed me at Steve Yegge, some­how I hadn’t run across him pre­vi­ous­ly.
Item: Bruce Eck­el on The Depar­ture of the Hyper-Enthusiasts, which is too rich to sum­ma­rize but if you had to, it would be: Ru­by is good, but not re­al­ly good enough to beat Python. I wrote about this be­fore, but the con­ver­sa­tion it start­ed re­al­ly has legs.
Item: Steve Yegge push­es back with A lit­tle anti-anti-hype, which ar­gues that friendli­er lan­guages some­times beat bet­ter lan­guages, e.g. Perl vs. Python. The piece is, he ad­mit­s, in­flam­ma­to­ry.
Item: Speak­ing of friend­ly lan­guages, if Steve is right, Ru­by has won, check out why’s (poignan­t) guide to Ru­by which isn’t just friend­ly, it’s a cute lit­tle pup­py bounc­ing in your lap, lick­ing your nose.
Item: Back to Steve Yegge, who ir­ri­tat­ed enough peo­ple with that pre­vi­ous piece that he wrote a follow-up, Bam­bi Meets Godzil­la, mak­ing the same points, but well enough that you don’t mind.
Item: Steve’s Tour de Ba­bel is a re­al­ly fun­ny and en­ter­tain­ing romp through a bunch of lan­guages.
Item: Steve’s al­so in­ter­est­ed in other-languages-on-the-JVM, just like me. Un­like me, he pos­i­tive­ly de­spis­es the Ja­va lan­guage. Me­morable quote: “Java has lots of won­der­ful fea­tures, but Ja­va isn’t one of them. Java’s ap­peal as a plat­form for do­ing re­al work rests pre­cise­ly on its strengths as a plat­for­m, not as a language.” This is in JVM Lan­guages: Ja­va 5, from the se­ries en­ti­tled Stevey’s JVM Lan­guage Soko-Shootout, a re­al­ly in­ter­est­ing run at a sam­ple pro­gram­ming prob­lem in a bunch of dif­fer­ent lan­guages run­ning on the JVM.
Item: Speak­ing of those lan­guages, it turns out that Charles Nut­ter who (with Thomas Enebo) leads the JRu­by pro­jec­t, has a blog, in which he’s re­cent­ly writ­ten about Get­ting IRB Go­ing which he kind of has (although it turns out to be hard), enough to type in Swing (!) code; and a piece which starts talk­ing about JRu­by on Rails, but veers in­to a very in­ter­est­ing dis­cus­sion of JRu­by per­for­mance.

 
Java EE 5 · We’re an­nounc­ing all sorts of Be­tas to­day: NetBean­s, Ja­va EE, and so on. Blogs are be­ing ag­gre­gat­ed on The Aquar­i­um. I think the strongest state­ment is Gra­ham Hamil­ton: Rav­ing about Ja­va EE 5. A cou­ple of days ago I wrote “don’t write the Ja­va EE crowd of­f, they’re not stupid at all...” Check Graham’s bul­let list un­der “wide rang­ing goals”; def­i­nite­ly my kind of stuff. Maybe I should try writ­ing that com­ment sys­tem in EE rather than RoR; if EE’s en­try lev­el could be en­gi­neered down to the point where it’s plau­si­ble for one-man pro­ject­s, that would be a game-changer.
 
Mustang Beta · Check out Mark Reinhold’s ex­cel­lent sum­ma­ry of the blog­ging flur­ry around the re­cent ar­rival of the Mus­tang Be­ta. Any­thing that has anti-aliasing in it is all right by me. I re­al­ly like the style of Mark’s cov­er­age, tak­ing up ques­tions about why the be­ta isn’t ac­tu­al­ly the lat­est build, po­ten­tial li­cense is­sues, and so on. I look for­ward to a time when any­thing less than this lev­el of trans­paren­cy is sim­ply un­ac­cept­able.
 
LAMP and Java · Take a minute and read Stephen O’Grady’s write-up, which starts at the Sun An­a­lyst Con­fer­ence, but says a bunch of things about Ja­va and LAMP and re­lat­ed sub­ject­s. I’ve been think­ing about this stuff al­most all the time for the past year or so, so let’s take his ideas a bit fur­ther ...
 
nbextras.org · I ran across a cou­ple of blog point­ers to nbex­tras.org and thought it looked kind of cool and kind of use­ful and kind of lightweight, and I won­dered how it came to be here this week when it wasn’t there last week. So I chat­ted with Trung Duc Tran (he’s one of the se­nior peo­ple over in our Prague NetBeans shop) who put it to­geth­er with a cou­ple of oth­er co-conspirators and asked “How’d you do that?” Wel­l, it turns out that they found a cheap host­ing ser­vice and rent­ed a fake Xen-based serv­er and cob­bled to­geth­er the Jet­ty serv­er and the Peb­ble blog­ging en­gine. “It’s amazing”, Trung told me, “how much work you can get a servlet en­gine to do when you have all the da­ta in memory.” I asked whether it was a lot of de­vel­op­ment time and he seemed sur­prised, they’d dis­cussed it over lunch one day last week and set it up over the week­end and now it’s up. This Java/Web/Open-Source tech­nol­o­gy, it’s gonna catch on, you just watch.
 
The Aquarium · Peo­ple have been ask­ing for it since forever, and re­cent re­leas­es of Roller now have a group-blogging fea­ture. I’ve al­ways been skep­ti­cal of the idea, which re­de­fines “blog” from be­ing about an in­di­vid­u­al voice to be­ing about a shared in­ter­est; be­cause peo­ple are big­ger and more in­ter­est­ing than their in­ter­est­s. But over the last cou­ple of week­s, my at­ten­tion has sev­er­al times been drawn to pieces in The Aquar­i­um, which is a group blog about GlassFish. While I’m not re­al­ly an EE kin­da guy, I can see how some­one who cares about that stuff could find this kind of a re­source use­ful. For ex­am­ple, check out this point­er to an over-elaborated but nonethe­less use­ful ar­ti­cle about do­ing REST in in JAX. Maybe “group blogs” have legs.
 
Upcoming Gig: JavaOne · Hah, I’m de­light­ed. JavaOne ac­cept­ed my talk, en­ti­tled Si­grid: The sim­plest pos­si­ble grid com­put­ing plat­form. See you in San Fran in May!
 
Recursive Spolsky · There’s much ado about Joel Spolsky’s The Per­ils of JavaS­chools. I think that Joel’s large­ly right, in that I don’t think that you can re­al­ly ap­pre­ci­ate why Ja­va is a good lan­guage un­less you’re pro­fi­cient in C, and pro­gram­mers who don’t re­al­ly ap­pre­ci­ate Ja­va won’t get the most out of it. But Joel is half wrong in claim­ing that Ja­va by­pass­es point­ers and re­cur­sion; I use re­cur­sion all the time in Java! If you learn pro­gram­ming via Ja­va but re­main ig­no­rant of re­cur­sion, you’ve been poor­ly taugh­t. Al­so, Bill de hÓra has a point when he says that the oth­er re­al­ly hard thing that good pro­gram­mers need to have thought about is con­cur­ren­cy. My guess is that Ja­va is ac­tu­al­ly a good lan­guage for teach­ing con­cur­ren­cy, be­cause the parts of the prob­lem it sweeps un­der the rug are not es­sen­tial to deep un­der­stand­ing and any­how aren’t the re­al­ly hard bit­s. Hav­ing said all that, if I were de­vel­op­ing a dif­fi­cult, mission-critical piece of in­fras­truc­ture, I might de­vel­op in Ja­va but I’d be leery of hir­ing any­one who hadn’t been to the mat with C. My ex­pe­ri­ence dif­fers from Joel’s in an­oth­er re­spec­t: Re­cur­sion is mild­ly hard. Clo­sures and con­tin­u­a­tions are hard. Con­cur­ren­cy is very hard. I nev­er found point­ers hard at al­l.
 
Language Landscape · As the year winds down, the programming-language news keeps flow­ing; at this point I wouldn’t be sur­prised by ma­jor New Year’s Eve an­nounce­ments. Bruce Eck­el wrote The de­par­ture of the hyper-enthusiasts, a lengthy riff on Beyond Ja­va, giv­ing Bruce Tate a hard time on some is­sues and rant­ing away in­for­ma­tive­ly on Ru­by & Python & Zope & EJBs & Rails & lots more; he’s a lit­tle less en­am­ored of Ru­by than oth­er­s. Speak­ing of Rail­s, David Heine­meier Hans­son re­sponds at length. If you’re go­ing to read the­se, do not fail to read the com­ments, which are even more in­ter­est­ing and in­for­ma­tive; Bruce Tate turns up in both con­ver­sa­tion­s. The oth­er item that caught my eye was Cameron Pur­dy not­ing that Cau­cho claims to have a mod­ule that com­piles PHP to byte­codes and runs it on the JVM four times faster than mod­_php (first bench­mark, but on a re­al app not syn­thet­ic). It’s GPL’ed. This is more than a lit­tle sur­pris­ing. I’ve been cam­paign­ing heav­i­ly in the Ja­va com­mu­ni­ty at large and here at Sun specif­i­cal­ly to make dy­nam­ic lan­guages on the JVM a ma­jor pri­or­i­ty, but I’d nev­er re­al­ly fo­cused on PHP, be­cause I didn’t know any­one was even work­ing on the prob­lem. (Wel­l, to be hon­est, al­so be­cause PHP has al­ways made me ner­vous.) This changes the “On Beyond Java” pic­ture. [Late ad­di­tion: last word to Steve Jen­son.]
 
On Beyond Java — the Web · Bruce Tate’s Beyond Ja­va is re­al­ly Web-centric; he ar­gues force­ful­ly that lightweight Web apps are one of the forces driv­ing peo­ple to­wards things like Ru­by on Rails and Seaside, as op­posed, say, to Ja­va EE. My ob­ser­va­tions are most­ly con­sis­tent with Bruce’s, which as a Sun em­ploy­ee makes me think a lot about how we can haul the Ja­va plat­form in­to the lightweight-web-app sweet spot. (So far I’ve failed to con­vince the Soft­ware or­ga­ni­za­tion to redi­rect most of the Ja­va EE en­gi­neer­ing re­sources in­to a rad­i­cal pur­suit of Con­ven­tion over Con­fig­u­ra­tion. [He’s kid­ding -Ed.]) But Bruce’s book had me all cranked up to write about the Right Way To Pro­gram The We­b, and then syn­chronic­i­ty whacked me up­side the head with a de­mo I saw to­day, and I’m bathing in Web-architectural angst ...
 
On Beyond Java — the JVM · One of the sub­jects that keeps com­ing up in Bruce Tate’s Beyond Ja­va is the parts of the Ja­va plat­form that aren’t the Ja­va lan­guage. In par­tic­u­lar, the JVM. Is it still in­ter­est­ing, or will the JVM be­come like the main­frame: not go­ing away, but old-fashioned and out of sight? ...
 
On “Beyond Java” · I just got around to read­ing Bruce Tate’s Beyond Ja­va. I think that the se­nior peo­ple in the Ja­va groups at Sun, and all the oth­er Ja­va pow­er­s, should read and think about it (and for that mat­ter the CLR peo­ple over at Mi­crosoft­). The premise of the book is re­al­ly noth­ing new: There are a lot of prob­lems out there for which smart, se­nior peo­ple are re­port­ing that there are lan­guages and/or frame­works that pro­duce so­lu­tions quick­er and bet­ter than Java. Beyond Ja­va as­sem­bles a lot of this tes­ti­mony, claims that we’re at an in­flec­tion point, and goes on to spec­u­late about what comes nex­t. It ar­gues in­ter­est­ing­ly by look­ing back at the his­to­ry of Java’s ex­plo­sive rise from nowhere to world dom­i­na­tion; but at the end of the day I’m not sure the his­tor­i­cal analo­gies are use­ful. In oth­er gripes, the book’s struc­ture is a lit­tle messy, and the kayak­ing anec­dotes that in­tro­duce each chap­ter could have been dropped with­out loss of val­ue. I al­so dis­agree with Tate’s ar­gu­ment that Swing and SWT are use­less, part of the prob­lem not the so­lu­tion. I hear loud com­plaints about ev­ery GUI-builder; some­what few­er about those in OS X; any­how, as far as I know none of the beyond-Java al­ter­na­tives are rich-user-interface champ­s. [Thanks to Sam Ru­by for point­ing out that I’d mis­read Tate’s ar­gu­ment on this, first time around.] Stil­l, it’s a sol­id piece of work; see al­so Sam Ruby’s take and the dis­cus­sion over at java.net. The book got me think­ing about two great big im­por­tant com­pli­cat­ed is­sues: the fu­ture of the JVM, and the right way to build Web ap­pli­ca­tions; but each of those gets its own es­say.
 
Roller Redux · Which is to say, Roller 2.0 has shipped. Lots of new stuff, and any­thing that can hold up un­der the blogs.­sun.­com load is pret­ty well battle-tested. I won­der if there are any oth­er freely-downloadable blog­ging en­gines (WordPress may­be?) get­ting as much full-time ded­i­cat­ed at­ten­tion.
 
Blogapps on the Air · Dave John­son tells us this morn­ing that his ex­cel­lent Blo­gapps project is fi­nal­ly on the air over at Java.net. If you want to un­der­stand all this tech­nol­o­gy, here’s a great big wide deep pool of work­ing ex­am­ples.
 
Bits on the Wire? · In­ter­est­ing twofer from Jim Wal­do, who is one of the Real­ly Smart Guys in the Sun soft­ware ecosys­tem. Way back in May, he wrote Go­ing all in­..., ar­gu­ing that when send­ing da­ta over the wire, it’s good to send ob­ject­s, and that try­ing to send raw data, not gov­erned by the se­man­tics of any par­tic­u­lar ob­ject sys­tem, is prob­lem­at­ic. I’m OK with send­ing ob­jects over the wire—as long as they’re short-lived and you keep those fal­la­cies in view—and the prob­lems Jim out­lines are re­al. But in fac­t, the ba­sic val­ue propo­si­tion of XML is that it al­lows you to re­ceive da­ta from an­oth­er pro­gram while in­su­lat­ing you rad­i­cal­ly from the oth­er program’s choice of com­put­er, op­er­at­ing sys­tem, pro­gram­ming lan­guage, database, and so. And, it seems to work in lots of places, for ex­am­ple syn­di­ca­tion feeds and prod­uct lookup. This doesn’t mean it’s easy, or that it works ev­ery­where, but there are ex­is­tence proof­s. So I wrote a quick note to Jim along the lines of “Uh, what about XML?” Now I’m feel­ing guilty, be­cause I see from his lat­est, What is XML?, that the ques­tion kind of de­railed his plans for what he was go­ing to write about and, well, now it’s Oc­to­ber. Any­how, go read the piece, it’s a good one, worth wait­ing for. To Jim’s points, I’d al­so add that push­ing the syn­tax prob­lem down in­to XML buys you both Uni­code good­ness and ac­cess to a whole raft of good free pars­ing soft­ware, which are not to be sneezed at. But his anal­o­gy be­tween XML and Unix pipe-fitting cul­ture is sound. Al­so, like Jim says, XML doesn’t make the hard problem—What does this char­ac­ter string mean?—go away.
 
What’s Going On? · Gosh, there sure is a lot hap­pen­ing; this week in par­tic­u­lar, ev­ery­one who wants to lash them­selves to the “Web 2.0” mast is hard at work, and the buzz flows thick and fast. Right at this par­tic­u­lar mi­crosec­ond, Zim­bra (won­der­ing about that name?) en­joys center-of-the-whirlwind sta­tus. Check out the ar­chi­tec­ture; this is a com­peti­tor for ex­ist­ing server-side com­mu­ni­ca­tions prod­ucts like Mi­crosoft Ex­change and Sun’s Mes­sag­ing Serv­er. It al­so has a decent-looking AJAX front-end, in­spired most­ly by Out­look but with what seem to be cool in­te­gra­tion hooks (Rich Sharples won­ders whether JavaScript is re­al­ly the right tool for the job). Any­how, good luck to Zim­bra; it’s go­ing to be a bit of a grind sell­ing this kind of business-critical server-side pro­duc­t. It looks pret­ty good, but it looks in­cre­men­tal, un-radical. Mean­while, I kind of sus­pect that Mark Pil­grim may be in­vent­ing the fu­ture off in a cor­ner where nobody’s look­ing; you may not have heard much about ei­ther Atom stores or mi­cro­for­mats; ex­pect that to change.
 
InvokeDynamic · Hey, re­mem­ber way last De­cem­ber, we had a bunch of dynamic-language ex­perts in to vis­it the Ja­va team here at Sun. That was just one lit­tle step in the pro­cess of mak­ing the Ja­va plat­form a lit­tle friendli­er to oth­er, non-Java-like, lan­guages. To­day I see an­oth­er step, Gi­lad Bracha writ­ing about a pro­posed new JVM byte­code, in­voke­dy­nam­ic, de­signed to low­er one of the nas­ti­er bar­ri­ers faced by peo­ple stag­ing dynamically-typed lan­guages on the JVM. Gilad’s style is aw­ful­ly prick­ly, but the nar­ra­tive is en­gag­ing.
 
Just Enough JXTA · I’ve been rea­son­ably suc­cess­ful at get­ting JXTA to do a cou­ple of sim­ple but very help­ful things. Here­with some re­marks on where I’ve found it use­ful, and on the Ab­so­lute Min­i­mum Ne­c­es­sary code to get a JXTA app run­ning. [Up­date: James asks me to post the code, so here it is, with com­men­tary, prob­a­bly on­ly of in­ter­est to JXTA-heads.] ...
 
Ruby on Rome · In that re­cent Ru­by piece, I re­marked that Ru­by thread­ing struck me as kind of fee­ble, and that thread­ing is get­ting re­al im­por­tan­t. Wel­l, I know one way to solve that prob­lem. So I tracked down JRu­by geek Tom Enebo and got some news and he point­ed to me to some code that I think is pret­ty cool ...
 
Indemnification? · A few days ago, I wrote about the scary Terms of Par­tic­i­pa­tion on Java.net. This led to some in­ter­nal dis­cus­sion­s, and it turns out to be more com­pli­cat­ed than it you’d think; to start with, SourceForge and Col­labNet have more or less the same in­dem­ni­ties. I still think it would be nice to get rid of them, but it’s not a slam-dunk ...
 
Scary Legals, Redux · I re­cent­ly cov­ered a sto­ry with a hap­py end­ing: the nasty (and mis­lead­ing) le­gal barbed-wire in front of NetBeans got tak­en down. Next step: let’s do the same thing for Java.net. Read on for ex­cerpts from the legal­s, but the bot­tom line is sim­ple: to non-lawyers (like me), this is scary stuff. The per­son who point­ed this out to me closed with the words “and so I’m not a mem­ber of java.net.” ...
 
More Dynamic Java · Check out this Java-to-Javascript “Hello World” from A. Sun­darara­jan. While I al­ways knew that there was of­fi­cial “scripting language” sup­port com­ing in the form of JSR 223, I saw it for the first time last week too; and it looks like it’s ac­tu­al­ly go­ing to be gener­i­cal­ly use­ful in a lot of dif­fer­ent places, and not just with Javascript ei­ther.
 
HiveMind · There’s this project I’m in­volved with where they’ve built a pro­to­type with HiveMind, and off the top, it looks like a very handy pack­age of use­ful stuff, check it out. Mind you, I’m some­what un­en­thused about all the mantra-chanting around In­ver­sion of Con­trol and Depen­den­cy In­jec­tion, yeah I know that Martin Fowler can write thousand-word trea­tis­es on it, but it seems much ado about some very ba­sic O-O tech­niques. Maybe I’m miss­ing some­thing; I’ve al­ways had a bit of an impedance mis­match with the Pat­terns Peo­ple.
 
Jython 2.2a1 · Bri­an Zim­mer did most of the work be­hind this al­pha re­lease, but Bill de hÓra has the best write-up. For sim­ple servlet­s, by the way, I’ve found the cur­rent 2.1 re­lease just hunky-dory, but it’s good to see pro­gress. Con­grat­u­la­tions and thanks to Bri­an.
 
The Generics Debate · We’re now well in­to our first Gener­ic year in Java-land, and the ju­ry is still pret­ty well out. For ex­am­ple, Ken Arnold at­tacks and Tor Nor­bye re­buts. Check out the com­ments on Ken’s piece for some fresh, in­tel­li­gent con­tri­bu­tion­s. As for my­self, I’ve just gener­i­cized a bunch of in­fras­truc­ture code, and the trade-off was pret­ty sim­ple: I got rid of a ton of cast­s, and the users of my APIs will get rid of even more. On the oth­er hand, I picked up a few compile-time warnings—yes, I do want an ar­ray like MyClass<K>[] dammit! (And I un­der­stand that the warn­ings are cor­rec­t, and that where pre­vi­ous­ly I had an un-flagged po­ten­tial ClassCastEx­cep­tion, now I can’t claim that I didn’t know.) I sup­pose there’s an­oth­er ben­e­fit in that my APIs’ users won’t be able to put a Bi­cy­cle in a con­tain­er de­signed to hold in­stances of Fish; is that a big­gie? Per­son­al­ly, the com­pil­er warn­ings ir­ri­tate me more than the casts did, but if what Tor and some of Ken’s com­menters are say­ing is right, I should just suck it up, be­cause my users are ben­e­fit­ing.
 
Java One Day One: Blu-Ray · So what hap­pens is, Sun saves up all its good news for months & month­s, and crams most of it in­to an open­ing two-hour bar­rage at Ja­va One. It’s pret­ty im­pres­sive, and so are the audio-visuals, with open­ing high-intensity cy­ber­elec­tro­mood­jazz from a band whose name I can’t find but fea­tur­ing Paul Horn. Any­how, news: BigIBMDeal, GlassFish, Real­lyFastWork­sta­tion, NewJavaNames, and there’s more. The one that I hadn’t known about and was a re­al sur­prise was the news that Blu-Ray play­ers are go­ing to come Java-enabled. This is sur­pris­ing, but ob­vi­ous when you think about it; along with your HD movie you can put a few class­files on the disk to do menus and up­dates and special-effects and, well, just about any­thing. For those who don’t know, there’s this fe­ro­cious multi-year bat­tle that’s been go­ing on for years be­tween two ri­val camps who want to pro­duce the next-gen DVD: Blu-ray and HD-DVD. It has noth­ing much to do with tech­nol­o­gy, it has to do with col­lect­ing per-disk patent roy­al­ties like the ones Phillips gets for ev­ery CD. The Ja­va move might be sig­nif­i­cant in this big com­pli­cat­ed chess game.
 
Enterprise Open Source · Among the flur­ry of Ja­va One an­nounce­ments is GlassFish, CDDL-licensed source code for some­thing called “Sun’s Ja­va Sys­tem Ap­pli­ca­tion Serv­er PE 9”. I said “Huh?” and they ex­plained to me that this was our im­ple­men­ta­tion of the Ja­va EE spec and I said “Oh good, we’re open-sourcing EE!” and they sneered at me and said “No, EE is de­fined by a par­tic­u­lar bi­na­ry that pass­es a par­tic­u­lar com­pat­i­bil­i­ty test, so in prin­ci­ple you couldn’t open-source it”. Uh, right. Any­how, I am quite sure our ef­fi­cient PR peo­ple will be emit­ting a flood of de­tails and FAQs, so I’d just like to tsk-tsk gen­tly at our friends out there (y­ou know who you are) that rushed in­to print last week de­plor­ing our clue­less­ness for not do­ing what was done to­day. Hey guys, cut us a lit­tle slack. And a tip o’ the hat to Bob Su­tor who did.
 
The Java + Open Source Sweet Spot · Check out this piece from Tim O’Reilly. The O’Reilly peo­ple track sales trends in tech book­s, not just their own but the whole in­dus­try. They’re trans­par­ent about their method­ol­o­gy and in my opin­ion these num­bers are very sol­id and be­liev­able. Any­how, in this case, you need to read the nar­ra­tive that goes along with the pic­ture. The growth is be­ing driv­en by the OSS+Ja­va stuff: Spring, Strut­s, Lucene, and so on. Hey Tim, how about do­ing middle-aged eyes a fa­vor and mak­ing fu­ture ver­sions of the graph a lit­tle big­ger?
 
Java Generics, Arrays, and Comparables · This is an ed­u­ca­tion­al sto­ry (and there­fore painful; O’Reilly books un­for­tu­nate­ly were harmed in its mak­ing) about all the Ja­va what­nots men­tioned in the ti­tle, with point­ers to the so­lu­tions to the prob­lem­s. [Up­date: cor­rec­tion from David Hall.] ...
 
The Autobox of Death · Hm­m, maybe I should have an­oth­er blog for Ja­va geek­ing. What hap­pened was, I had an ArrayList<String> and for a va­ri­ety of rea­sons I de­cid­ed to turn it in­to a HashMap<String,String>. After I’d fixed ev­ery­thing up, I got the weird­est Nul­lPoin­t­erEx­cep­tion, and I traced it to a call that looked like (x is the HashMap)
if ((x.­size() > 0) && x.get(0).e­qual­s(­foo))
and some­how the com­pil­er had de­cid­ed that get(0) was a rea­son­able thing to do to a HashMap<String,String>. Uh, strong typ­ing, any­one?

 
Java Tiger Bites · I fi­nal­ly switched over to Ja­va 1.5 for my cod­ing work. Here­with a cou­ple of things I found mod­er­ate­ly sur­pris­ing. For Ja­va hounds on­ly ...
 
JXTA Pancakes · One week late last year, on a lark I made a tra­di­tion­al Sun­day break­fast: pan­cakes, ba­con, and maple syrup. The kid has on ev­ery sub­se­quent Sun­day put in a non-negotiable de­mand for more of the same. The good news is that the pan­cakes are get­ting bet­ter. The bad news is that learn­ing suck­s, and my JXTA pan­cakes are still kind of burnt and mis­shapen ...
 
Project Harmony · Every­body has now heard about Har­mo­ny (if you haven’t, here are the pro­pos­al, FAQ, and friend­ly nois­es from Sun). Sup­pose they pull it of­f, and that there’s an OSS J2SE that any­one can down­load, build, and change. Why is this a good thing? If you’re a mem­ber of the Free Soft­ware move­men­t, the project is its own re­ward for rea­sons of pure ide­ol­o­gy hav­ing noth­ing to do with tech­nol­o­gy, en­gi­neer­ing, or busi­ness. I’m not among the faith­ful, but I’ve noth­ing against ’em. How about for the rest of us; are there any ac­tu­al­ly any prac­ti­cal real-world ad­van­tages? I’d think the most ob­vi­ous win would be around patch­ing and bug-fixing. In my ex­pe­ri­ence, OSS soft­ware gets bug­fixed quick­er and bet­ter. On the oth­er hand, the Har­mo­ni­ans plan to achieve com­pat­i­bil­i­ty by pass­ing the TCK test suit­e, which ev­ery­one says is tough and time-consuming; quite like­ly, more time-consuming than most in­di­vid­u­al pieces of bug-fixing. So that might get in the way of the kind of patch­ing re­spon­sive­ness we’ve got­ten used to in OSS-land. [By the way, is it pub­licly known how long the J2SE TCK ac­tu­al­ly takes to run? I’ve nev­er seen that pub­lished.] I guess you could ap­ply patch­es with­out do­ing a “release” and run an un-TCK’ed J2SE on an in­ter­im ba­sis. That might make some peo­ple ner­vous; it would make me ner­vous. In fact I think the rules say you can’t call it Ja­va un­less it’s TCK’d, so I guess we need a new name; I pro­pose “JINJ”. What­ev­er; whether or not you re­al­ly think Har­mo­ny is worth do­ing, you have to like peo­ple who are hurl­ing them­selves at big tough prob­lem­s, and not in the in­ter­ests of get­ting rich. Plus, they’re do­ing it at Apache, my own fa­vorite OSS nexus. My hat’s off to them.
 
LimeWire & Chansonniers Perdus · For the Français-challenged, the last words sort of mean “missing singers” but a chan­son­nier isn’t just a singer, it’s a French male pop singer in a par­tic­u­lar ro­man­tic kind of old-fashioned style. Any­how, they’re still miss­ing, de­spite the best ef­forts of some re­al­ly re­mark­able soft­ware; oh, and there’s a P2P vs. RIAA an­gle too. [Up­dat­ed: found one out of two.] ...
 
Jini and the Tokyo Subway · Just now, the big sto­ry in Jini-land is the Starter Kit re­lease. I’ve been spend­ing quite a bit of time here the last few days, try­ing to fig­ure out whether it’s the fu­ture or not; ei­ther way, it’s im­por­tan­t ...
 
Java, the Grid, and Rio · I’m think­ing about how you’d run a big dis­tribut­ed Ja­va sys­tem as a ser­vice across a whole lot of net­worked com­put­er­s, spread­ing out on­to new pro­ces­sors as re­quired, and ex­chang­ing high mes­sage vol­umes. Sounds kind of like a “grid”, doesn’t it? Pok­ing around for APIs first turns up DRMAA, but it seems to be ori­ent­ed to­wards batch jobs that run for a while then stop and don’t talk to each oth­er much. Daniel Tem­ple­ton point­ed me at the Rio Frame­work (from Jini-land), which looks like more or less ex­act­ly what you’d wan­t. Ac­tu­al­ly, Daniel just gave me the name “Rio Framework”, which turns out al­so to be the name of an alternative-policy treaty, and then search­ing for “Java Rio” gives us Peter del Rio as well as var­i­ous sum­mits and JUGs in Brazil, so it was re­al work to find the soft­ware. This frag­ment is a con­scious at­tempt to give it a lit­tle Google-juice; I’ll re­port back on whether it work­s.
 
One IDE to Rule Them All? · Don Box has an in­ter­est­ing set of Pre­dic­tions for 2005. Every one of them is thought-provoking and well-framed. There is one, though, that I have to push back on: the sur­face pre­dic­tion (#2) is that “Sun will em­brace Eclipse”. The deep­er is­sue here pops up a sen­tence lat­er, when Don talks about “unifying on a com­mon tool platform”. Wel­l, as I (and ev­ery­one else who at­tend­ed) learned at the “IDE Shootout” event at the last Ja­va One, the Ja­va IDE land­scape is like a messy, vig­or­ous, noisy, pub­lic mar­ket­place. Each of the big IDEs is here for the long haul; and it’s not just Eclipse and NetBean­s. Don’t for­get Emac­s, JDevel­op­er, and the IDE with the most fa­nat­i­cal fans of al­l, In­tel­liJ IDEA. Un­like the Win­dows world, where Visu­al Stu­dio is all that re­al­ly mat­ter­s, what we have here is an ecosys­tem, a mar­ket, a place where com­pe­ti­tion and evo­lu­tion hap­pen. There is ab­so­lute­ly ze­ro chance that the Ja­va world will ev­er “unify on a com­mon tool platform”. Which is A Good Thing.
 
Javapolis Jet-lag · In a week dis­tin­guished by good food and bad trav­el plan­ning, I flew to Europe on Mon­day to at­tend Javapo­lis in An­twer­p, Bel­gium, and re­turned Thurs­day. Here­with an il­lus­trat­ed trav­el­ogue and re­marks on the con­fer­ence, the Cathe­dral and the Pink Pan­ther, and the flesh of Je­sus ...
 
Java Coalface Notes · I man­aged to ig­nore Atom for a few hours this week and get back to work­ing on project Zep­pelin, which leads to a few thoughts on ob­ject trans­mis­sion, con­cur­ren­cy, Jython, and oth­er stuff of pos­si­ble in­ter­est to hands-on Ja­van­s ...
 
Latency · [For Java/net­work­ing geeks on­ly.] I have these two Ja­va pro­gram­s, talk­ing through an or­di­nary TCP/IP sock­et. The client sends a (medium-sized) se­ri­al­ized ob­ject to the server, which does a lit­tle bit of com­pu­ta­tion and ac­knowl­edges by send­ing a (s­mal­l) ob­ject back. Straight writeOb­jec­t()/read­Ob­jec­t() calls with setTcpNoDe­lay(true) in ef­fec­t. When both of them are run­ning on my 1.25Ghz Pow­erBook here, the la­ten­cy re­quired for the whole trans­ac­tion is like 190m­sec, which is hor­ri­ble. So I moved the serv­er code down to the mouldy old P300 De­bian box in the base­men­t, talk­ing to it over two or three legs of WiFi and Eth­er­net switch­es, and the la­ten­cy dropped to around 33m­sec; still not great, but the dif­fer­ence is in­struc­tive.
 
NetBeans · I’ve been us­ing NetBeans to in­flate the Zep­pelin, and you know what, it’s not bad. The Mac in­te­gra­tion could be a lit­tle bet­ter, but a whole lot of things I need to do are one keystroke away. It runs plen­ty fast enough on the Pow­erBook (mind you, on­ly a few thou­sand lines of code so far). JUnit’s right there, which is nice. The de­bug­ger makes it a lit­tle too hard to to keep an eye on class vari­ables, but aside from that does about what I need; when I was driv­en to “print” state­ments the oth­er day I was fight­ing a com­plex sock­et con­ver­sa­tion be­tween two ma­chines where one side sud­den­ly start­ed see­ing EOFs and I couldn’t even tell which side was wrong, I’m not sure there’s a de­bug­ger in the world that would have been much help there. Now all I need is to get Jython in­te­grat­ed, and we’re mak­ing progress on that, stay tuned.
 
javadocs.org · Via the ex­cel­lent Rus­sell Beat­tie, a point­er to javadoc­s.org. Giv­en the amount of Ja­va pro­gram­ming I am apt to do in the next few years, I sus­pect this could save me sev­er­al weeks out of my life, in ag­gre­gate. I’m mak­ing a do­na­tion, and I think my em­ploy­er should help too; maybe we al­ready are.
 
author · Dad · software · colophon · rights
Random image, linked to its containing fragment

By .

I am an employee
of Amazon.com, but
the opinions expressed here
are my own, and no other party
necessarily agrees with them.

A full disclosure of my
professional interests is
on the author page.