Hypothetically speaking, if I had received an invite to join the Kindle Development Kit (KDK) for active content limited Beta program, which I didn’t, and had read over the Terms and Conditions for the KDK, which don’t officially exist, I wouldn’t have seen this section:
You will not, without our prior written consent, use our trademarks, trade names or logos in any manner, or issue or contribute to any press release or any other public statement relating to the Program, our relationship with you or the terms or existence of this Agreement.
If such a policy existed, and I’m not saying it does or doesn’t, it might prevent anyone from disclosing that they were even working on any Kindle apps. It’s a good thing I’m not doing that. And I certainly wouldn’t be able to share any source code examples or documentation from the KDK with you because the non-existent policy might say:
We will from time to time provide you access to certain software, documentation and related materials (the “Materials”) in our sole discretion. … You will not use or authorize a third party to use any software in a manner that would in any way cause the Materials to be licensed free of charge, distributed in source code form or modifiable other than as expressly permitted in this Agreement.
It’s really too bad the beta program doesn’t exist because if it did I could tell you about the neat <redacted> feature, the fact that the whole thing is based on <redacted>, or the <redacted> limit of <redacted> KB/month. Wow, I can’t believe nobody has reported on that yet.
So… what could we talk about instead? How bout ‘dem Saints?
However, it turns out that that same organization also has inventory management software on the NetBeans Platform. Their internal Time Reporting, Project Management and Resource Allocation system is based on the NetBeans Platform, while they've worked on quite a few different prototypes and mock-ups, using the NetBeans Platform as a natural base, using a wide array of the different APIs provided.
And the NetBeans Platform was also chosen for the UI for their internal computer hardware, server and virtual machine inventory system:
All three of the above applications are extremely data-intensive, which is a typical reason for wanting to use the NetBeans Platform, since it provides so much UI (especially complex Swing components that aren't found in standard Swing) for managing large sets of data out of the box.
In other news. Read an interview, published today, with the developers behind these applications here on NetBeans Zone!
|
The Sun-Oracle Strategy WebCast and subsequent Webcasts and Docs generated multiple comments and discussions threads in the Web from which I want to highlight a few comments in here. Please check the original posts for context, clarification and caveats. |
On OSS licensing - "There are no plans to change the open source GlassFish licensing for any of the GlassFish modules that I am aware of as I work directly with the team right now in the integration process" (Mike Lehmann, Director of PM for WebLogic Server and GlassFish).
On clustering - "Clearly GlassFish 2.1 has clustering today and 3.0 currently does not. Customers depend on the GlassFish 2.1 implementation and as I have said on TSS we are committed to continue supporting it per our lifetime support policies" (ML).
More on clustering - "We are very much working with the team to assess how clustering will fit on the 3.x roadmap given it was already on the original 3.x roadmap - the ideal will be at least parity with 2.1 - so judge on the result when we deliver versus ahead of the plan" (ML).
Ultimately, all of these comments will need to be judged by the reality of what Oracle delivers. As I wrote at TSS, "The Proof of the Pudding is in the RoadMap". In that same thread, Mike writes: "You will have to judge us on how we execute over the next few months while we realign roadmaps and delivery schedules but I hope we can surprise folks with some good turns we can do as a combined company."
It is still very early in the process of integrating the GlassFish team into Oracle; remember that the two companies could not work together before CiC. Hopefully we will soon be able to give you more details.
You'll find out about two NetBeans Platform applications created by AirIT in Orlando, FL, for managing airports and passengers. AirIT's solutions are operational at many airports around the world including Detroit, Minneapolis, Memphis, Philadelphia, Miami, Puerto Rico's, Luis Munoz Marin International Airport, Frankfurt, Berlin, and Düsseldorf International Airports in Germany.
Why is the NetBeans Platform being used? "When we began thinking about evolving our rich client framework, we wanted a proven foundation to base it on. The NetBeans Platform provides us with a module-based system that includes many conveniences that we now take for granted: full Swing integration, allowing us to reuse existing UI components; a robust windowing framework, modes and undocking windows enhance user productivity; loose coupling between modules, allows for the recombination of modules to build new suites of products to meet the needs of a specific customer; and the ease of use, the underlying APIs are easy to pick up and use even for a developer new to the platform. The NetBeans Platform has been integral in our efforts to integrate our products into a comprehensive enterprise suite."
The first of the two applications is Flight Information System, used by airport personnel to plan for and manage flights of all types, airport usage (such as concourses, terminals, gates, ticket counters), and flight schedules, among other information:
The second is Local Departure Control System, which is a passenger processing solution that allows airline operations without proprietary departure control systems to deliver first-rate passenger and baggage handling by alleviating the need to manually process passengers and baggage:
Next week more recently discovered NetBeans Platform applications will be highlighted here and on netbeans.dzone.com. If you have applications on the NetBeans Platform that the world should know about, please say so!
For those of us who uses Mercurial distributed version control system (DVCS), I have great news: Intland has released the 1.6.0 beta of the MercurialEclipse plugin!
The main changes are dedicated the "enterprise" use case - we've improved scalability, usability and performance of the plugin.
P.S. Screenshots are coming soon...
Are you interested in SWT API for the Windows Ribbon Framework? If yes please raise your voice in bug 293637. It looks like the Ribbon can’t be used in the SDK or any other Eclipse project at the moment. However, it’s still unclear if it can be part of the SWT API.
|
Today, February 3rd 2010, at 10 AM Pacific Standard Time, Prasad is talking about SailFin V2 (Sun GlassFish Communications Server 2.0) in the latest edition of Sun Software Webcasts. The webinar will cover new features in SailFin V2 and also explain how to develop SIP applications using SailFin V2. You can register here for the webinar. For more information, please take a look at Prasad's blog. |
If we allow others to make decisions about what the Net is for — preferring some content and services to others — the Net won’t feel like it’s ours, and we'll lose some of the enthusiasm (= love) that drives our participation, innovation, and collaborative efforts.or, reworded for Eclipse:
If we allow others to make decisions about what Eclipse is — preferring some plug-ins and projects to others — Eclipse won’t feel like it’s ours, and we'll lose some of the enthusiasm (= love) that drives our participation, innovation, and collaborative efforts.In other words, as long as the official Eclipse distros are controlled by single companies, the growing body of users will continue to be disenfranchised. I think the Apache Foundation epitomizes what the Eclipse Foundation should strive to emulate:
We consider ourselves not simply a group of projects sharing a server, but rather a community of developers and users.Required diversity, decisions made by contributors, refusal to allow sponsors to control project direction, ... those are some of Apache's open fundamentals. If elected to the Board, I will work for moving the Foundation in that direction. I'm pro-member-company-profits, but not in a way that is anti-open. I want Eclipse and the Foundation to be viable in the long-term and I believe the only way to accomplish that long-term relevance is through a truly open meritocracy.
Here’s a scary thought for you. Every day, hundreds of billions of dollars of financial transactions are driven completely autonomously by computer algorithms. The fate of corporations and nations rests on bits of computer code sent out by their makers to do battle in a high-stakes trading war. And when something goes wrong, it can go spectacularly wrong.
When you think of stock exchanges you probably have a quaint notion of a paper-strewn room full of stressed-out traders yelling to be heard over each other while watching big screen monitors that cover every square inch of the walls. Or maybe you have a more modern picture of an army of white collar workers barricaded in their caves of steel intently staring at computer displays, waiting to pounce on the right news or slightest movement by executing a quick buy or sell order.
In reality, today’s markets are largely driven not by bellicose bombasts or educated elites but by algorithms written by programmers like you and me. Programs that are set free to wreak profit (or havoc) in the innards of the world’s electronic cyber-market. According to the Financial Times, program trading accounts for about 30% of the total daily activity on the New York Stock Exchange, and a whopping 60-70% of the activity on other markets such as the Nasdaq. In 2008, the total world derivatives market was estimated at nearly $800 *trillion* dollars.
Unsatisfied by the decision speeds of mere humans, huge banks have turned over the keys to the vault to programs to do the trading of stocks and derivatives for them. The idea has a certain appeal: Put in a few billion dollars, push a button, and walk away while the computer does all the work. When you come back, if all goes well, you’ve made a nice profit. “Leave the driving to us,” as the slogan goes. Even a monkey could do it. Right?
Well, if you’re not a developer and you’re reading this, please take heed. Computers make mistakes, because they just do what their programs tell them to do, and all programs have mistakes lurking in them. “Bugs,” we call them. Much of the craft of computer programming is concerned with reducing the number of bugs. When a program controls something really important, like say an X-Ray machine, a fighter jet, a space craft, or a nuclear power plant, extreme efforts are put into eliminating as many bugs as humanly possible. But as a number of high profile cases have proven, it’s impossible to detect them all.
Take the case of the NYSE Euronext exchange operator. Recently it fined a trading firm for “failing to control” its trading algorithm. One day, out of the blue, the program decided to send “hundreds of thousands” of messages for faulty orders, clogging up the exchange for everyone for hours. All it takes is a bad “if” statement or a misplaced semicolon, or maybe an array that grows larger than expected or a race condition in multi-threaded code. Let’s not even mention what a malicious hacker with an agenda can do.
So what’s the fix? Acknowledge that bugs happen, and put in checks and balances to catch and contain them. Don’t assume computers are infallible. They’re just as fallible as the humans that build and program them. More, because humans have the advantage of common sense. Let’s use it.
Photo credit: Walt Dabney
Writing JavaScript/ActionScript/Flex code becomes easier with upcoming IntelliJ IDEA 9.0.2. New set of live templates (see Settings dialog (Ctrl+Alt+S), Live Templates, JavaScript/ActionScript group), allows to avoid tedious typing when you need to loop over an Array, Vector or anything else. Luckily, some abbreviations are the same as with Java: iter, itar, ritar. Here’s the list of currently available live templates:
| Abbreviation | Description |
|---|---|
| iter | Iterate (for each..in) |
| itin | Iterate (for..in) |
| itar | Iterate elements of array |
| ritar | Iterate elements of array in reverse order |
To use a live template, just type its abbreviation anywhere in your code and press Tab.


Ctrl+J shortcut shows you all live templates available for current context.

You've probably seen the news - the Sun/Oracle transaction has closed. With the passing of that milestone, I can once again speak freely.
Having had nine months to accelerate down the runway, there's not a doubt in my mind Oracle's takeoff and ascent will be fast and dramatic. I wish the combined entity the best of luck, and have enormous confidence in the opportunity.
Greg Papadopoulos, one of the brightest people I've ever known, once made a very interesting statement - all technology ultimately becomes a fashion item. It was true for timekeeping, and it's definitely true of computing and telecommunications. To that law, I'd like to add a simple corollary: the technology industry only gets more interesting. It's been true my entire life.
As for where life takes me next, you should follow me via Twitter at openjonathan to find out. I'll also be rehosting this blog (and again, stay tuned to Twitter by following me here). I expect to do my part to keep things interesting.
Thank you for your support and commitment. I wish you all the best of luck building, taking advantage of (and likely wearing) the future!
Jonathan Schwartz
CEO, Sun Microsystems, Inc.
A Wholly Owned Subsidiary of Oracle Corporation.
Steve Jobs has just announced the iPad, calling it a “magical device at a breakthrough price”. Apple says the iPad runs all applications currently available on the iPhone App Store, plus apps customized for the device.

Here are the official specs direct from Apple:
Price: $499 for 16GB, $599 for 32GB, $699 for 64GB. If you want 3G that’s $130 extra up front, plus $14.99 for 250MB/moth, or $29.99/month for unlimited data.
Shipping is expected in March worldwide for the WiFi model, April for the 3G model. Unfortunately you can’t pre-order one right now pending FCC approval.
The iPhone 3.3 beta SDK with support for the iPad is available now from the Apple Developer’s web site. It includes an iPad simulator so you can begin testing right away. Similar to Android, you write one iPhone/iPod Touch/iPad app that runs on any device but adapts its user interface to the user’s resolution.
If you try to run an unmodified iPhone app on the big screen, it will either display in a small window in the middle of the screen or the user can zoom it up to 2x size. Zoomed apps won’t appear as crisp as apps adapted for the iPad, of course. That’s because original iPhone apps were designed for a resolution of 480×320 pixels. If you blow that up to 2x the size, you have 960×640 but every dot is 4 times bigger (and blockier) than it was originally.
See also: Live coverage of the announcement.
The first IntelliJ IDEA 9.0.2 EAP build will add support for UiBinder, new functionality introduced in GWT 2.0. IntelliJ IDEA will understand tags and attributes in ui.xml files:
Inconsistencies between ui.xml file and associated Java class will be highlighted:
You can jump from field to the corresponding tag by using icon on the gutter:
Also IDE provides actions to quickly create new ui.xml file with associated Java class (in Edit | New | Google Web Toolkit menu) and to generate @UiHandler method (in Code | Generate menu).
Expect new version EAP to be published shortly.
Since IntelliJ IDEA is so much loved by keyboard addicts, here is a tiny yet helpful feature introduced in version 9.0.2: you can change size of a tool window by means of your keyboard.
Say, you’re doing “find usages”, the tool window is popping up and it’s too small for you to comfortably look at the usages tree. Now you don’t have to grab a mouse to stretch it up, just hit Ctrl-Shift-Up (Meta-Shift-Up for Mac users) and your tool window is getting bigger.
So, if you need to resize a tool window: focus it (by Alt-number or Ctrl-Tab) and then use Ctrl-Shift plus an arrow key that points to the direction you want.
You can also use these arrow shortcuts to resize dialogs and actually any window that IntelliJ IDEA shows. Say, you opened the project structure dialog and it’s too narrow for you. Use Ctrl-Shift-Right and Ctrl-Shift-Down to make it bigger.
Just found a very good write up about maven vs ant builds - http://www.iternum.com/knowhow/guidelines/maven-vs-ant/. A very interesting read for everybody who need to build Java applications.
P.S.
Interestingly, I see that there are not much changes since the last time I was heavily involved in the maven configuration nightmare on a big J2EE application (this was at 2006). Right now I'm in a good position - we are using ant build files generated automatically from the Eclipse plugin projects by the PDE. All what we need then is to integrate them via Makefile.local to our overall (custom) build process which also manages to compile and build our C/C++/Java/Eclipse code to handy rpm files of ~300MB size :-)
It’s “T-Day” for Apple as the company is set to announce the long awaited Apple Tablet. I blogged about the event as it happened, and now that it’s all over I’ve re-arranged the comments a bit for easier reading. Enjoy!
[ See also: $499 gets you a powerful tablet for browsing, books, and apps ]
7:57am (Pacific time): The media mob is already assembling at the Yerba Buena Center for the Arts. If you’re like me and you can’t be there in person, I’ll try to make you feel like you are. The temperature is a little nippy, 50 degrees, so bundle up, folks.

8:02am: It’s not too late to try your luck at the Apple Tablet polls. Scroll down to the very end of this post to see them. Polls close at 10am Pacific time.
8:11am: Interesting article at The Gawker about all the Apple Tablet anticipation. They call speculating about the tablet “one of the great modern pastimes”.
8:22am: Crowdsource prediction from the polls below: iSlate, available in March, for Book reading, $700-799, programmed in Objective C. My predictions: iPad, in June, for Games, $900-999, in Objective C.
8:26am: Apple Tablet, #Apple, iSlate, and iTablet are all trending on Twitter. No surprise there, but the one I can’t explain is “Frantic Steve Jobs”.
8:29am: Comments are open! Add your voice to the Trackback area below. We did away with that nasty registration form, so jump in.
8:33am: Is this the outside of the Apple Tablet? Looks pretty bland but plausible.
8:38am: Quite a mix of people in the crowd. Young and old, sweatpants and power suits, not to mention “black clad Apple security types” guarding the entrances. Not many women. Maybe they’re smart enough to avoid standing out in the cold for 3 hours.
8:43am: Lots of iPhone developers in the crowd. Everybody is wondering how compatible the tablet will be with the iPhone/iPod touch. Will it start with zero apps or 100,000?
8:50am: Apple shares down $3.38 this morning to $202.56. Is this a case of Buy on the rumor, sell on the news?
9:05am: Wireless networking is becoming a problem. WiFi is prohibited in the center, and 3G is iffy. Ars writes “We use Sprint [on EVDO] actually, at any big event, AT&T dies because there are 1000’s of iPhones around”. Even people with wireless mice are having a hard time.
9:07am: If the Apple Tablet allows background processing, and is available on carriers other than AT&T (or no carrier at all), I wonder what that will do to the momentum behind Android? Comments welcome.
9:20am: Some people are getting inside the building now (the glass part), others are still standing in the long registration line.
9:22am: Overheard on gizmodo: “I hope Apple announces a tablet that’s really just 6 iPod touches glued together, bezels and all.”
9:28am: Doors are about to open; mood is jovial but some crowding.
9:36am: No, there is no live video feed available. That’s what you have us for! You know, everybody disses Apple for this but I think it just builds on the whole anticipation/insider/secret knowledge thing they have going. Is that why Google events are so boring in comparison? Yeah, that’s it.
9:38am: Another good one: “I hope Apple announces a tablet that makes us all understand why we inexplicably crave a tablet.” Only 20 minutes left before the polls close!
9:42am: Doors are open and the crowd streams in. Looks like Steve Jobs will be in attendance after all. How can we tell? Because Dylan is playing.
9:45am: What kind of company would Apple be without Steve Jobs? He certainly makes it more fun.
9:46am: This just in: Leaked pictures of the Tablet! Er, not really, but funny.
9:48am: Everybody is commenting on the chair on stage. Is Steve J not feeling up to standing? Please God don’t let this turn into Dick Clark’s New Years Rockin’ Eve.

9:56am: People are taking their seats (in the audience I mean). Al Gore is here. How come he gets all the good invites?
9:59am: Looks like TechCrunch has crashed under the load. Or maybe the server died in shame over what CrunchPad could have been.
10:01am: Steve is out on stage! Big applause. Big grin on his face. “We want to kick off 2010 by introducing a truly magical and revolutionary new product”. But first, a few updates.
10:08am: (AppleInsider feed falls by the wayside too… zdnet.com and cnet.com showing strain but still up. No update from Ars in like 20 minutes).
10:08am: 250M iPods sold, 140K apps in the App Store, 3 billion apps downloaded.
10:09am: Jobs: Is there room for something in the middle of a laptop and a smartphone? Not the netbook - too slow, low quality display, and PC software. [snicker] It should be better at things like browsing the web. Email. Photos. Videos. Music. Games. eBooks.
10:11am: Jobs holds up the tablet… and the crowd goes wild. It looks just like a big iPhone.
10:14am: It’s called the iPad. Desktop is customizable, looks like a cross between Mac OS X (dock at bottom)and iPhone OS (icons, strip at top). Steve is emphasizing the web browsing right now.
10:14am: Display is not wide screen - looks closer to 4:3. “Much more intimate” than a laptop. Ah, now I see what the chair is for, that intimate, fire-side chat feeling. Steve runs through the demos.
10:18am: On-screen keyboard is *huge*. Looks like full size.
10:20am: Apps are not just scaled up versions of iPhone apps. For example the Calendar is 2 pages wide. Mail shows iPhone-like summary on left, reading pane on right.
10:23am: Interestingly, the demo unit is connected via WiFi. There is no 3G/phone icon visible anywhere.
10:23am: iTunes runs natively on the iPad. Album covers and all. No need to have a computer to sync up with it.
10:25am: Now showing Google Maps with Street View. Graphics are super smooth. I wonder if this has one of those dual-core ARMs? Or is it Intel Atom? Or Snapdragon? It has to be something pretty darned fast.
10:28am: Here come the specs. 0.5″ thick, 1.5 lbs.
10:30am: Custom 1GHz Apple A4 chip.
10:35am: 16-64GB Flash storage. Full capacitive multi-touch. WiFi 802.11n.
10:40am: Existing iPhone apps will run unmodified. They can run in 1x mode, unscaled, in the middle of the screen, or in 2x (full screen mode). The iPhone SDK has been enhanced to support the iPad. Using the new APIs you can write an app that works on *both* devices, and takes advantage of the bigger screen on the iPad if the user has that.
10:42am: Demo of Nova, a first person shooter. Looks nice. Ships “later this year”.
10:45am: Newspaper reading demonstrated with the New York Times. Multiple columns, inline video.
10:46am: Now showing the Brushes demo. Painting on the screen. Like the iPhone app only bigger.
10:48am: Next up: EA games. Given 3 weeks with the device to make a demo. Need for Speed Shift - touch and accelerator enabled. Touch mirror to see behind you. (Sorry for zdnet/cnet slowdown folks, server is getting hammered!)
10:50am: No word on multi-tasking or camera yet, looks doubtful.
10:53am: MLB.com app looks awesome. Live-game experience, navigate through games, pitch-tracker, trajectory of each pitch from the player’s perspective. And oh yeah, real video from the game if you want that.
10:55am: New app: iBook Store. Browse, buy, and read books online. All 5 major publishers (Penguin, Harper Collins, Simon and Schuster, MacMillan and Hachette) are on board. “Stands on the shoulders” of Kindle and goes a bit further. Bookstore opens this afternoon.
10:59am: iBook store uses the standard EPUB format (unlike the Kindle). You can change the font, size, etc..

11:00am: Also new: iWork on the iPad. New Keynote presentations designed specifically for the iPad. New version of Pages (word processor) and Numbers (spreadsheet). [I wonder if it can video out to a projector?]
11:11am: Keyboard changes based on the application. For example there are custom keyboards in the spreadsheet application for entering formulae.
11:12am: iWork apps are $9.99 each (not bundled together).
11:13am: Steve’s back. The iPad supports USB synching, but
also there are models with built-in 3G. There are 2 plans. $14.99 for 250MB/mo, or $29.99 for unlimited data. Wow.
11:15am: 3G is provided by AT&T in the US. International available in June. There is no contract - cancel any time.
11:16am: All models are unlocked and use GSM micro-SIMS.
11:19am: Price: $499 for 16GB, $599 for 32GB, $699 for 64GB. If you want 3G that’s $130 extra. Shipping in 60 days worldwide.
11:22am: Accessories include a nice case, and a dock with a built-in keyboard.
11:30am: Cue video espousing how great the iPad is.
11:34am: “This is a magical device at a breakthrough price”. That’s it folks, thanks for joining us.
Just for fun I’ve created a few polls in the days running up to the event. The polls are closed now, but check it out and see how well you scored.
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.Enjoy!

IntelliJ IDEA 9.0.1, the first bugfix update for IntelliJ IDEA 9, is now available. With almost 200 resolved issues in such areas as Flex support, version control integration, Groovy support and others, it’s a strongly recommended upgrade for all users of both Ultimate and Community editions of IntelliJ IDEA 9.
Download IntelliJ IDEA 9.0.1 now, and check the release notes for the new update.
If you are working with Flexmojos Maven projects in IntelliJ IDEA 9, and have imported Flexmojos project as described in this post, and are planning to debug your application and browse through Flex SDK sources, this post is a must-read for you. Inside you will find details on how to configure IntelliJ IDEA so that it properly recognizes SDK sources and their ASdocs.
When IntelliJ IDEA imports a Maven project, it creates a bunch of module libraries that match pom dependencies. For each library it also configures sources and documentation, assuming that they are located in *-source.jar and *-javadoc.jar respectively. Unless you have these files in your local Maven repository, you’ll see them marked with red (see Projects Structure dialog (Ctrl+Alt+Shift+S), Libraries section).

If there is a remote Maven repository containing these files, you can download them via Maven tool window.

For example, standard Flexmojos repository contains *-sources.jar files for the latest Flex SDK distributions (3.5.0.12683 and 4.0.0.12575): http://repository.sonatype.org/content/groups/flexgroup/, which is enough both for debugging code and viewing documentation, because IntelliJ IDEA automatically picks up ASdoc from sources.
If remote repository does not contain Flex SDK sources, you can set them up them manually, but consider that you’ll have to do a lot of routine work yourself — SDK sources should be individually configured for each module library. You may download a standard Flex SDK installation and keep it somewhere on your computer, and then add source folders to Maven libraries according to the following table.
| Flex Library | Source Folder |
|---|---|
| com.adobe.flex.framework:framework:swc | [Flex SDK]/frameworks/projects/framework/src/ |
| com.adobe.flex.framework:flex:swc | [Flex SDK]/frameworks/projects/flex/src/ |
| com.adobe.flex.framework:rpc:swc | [Flex SDK]/frameworks/projects/rpc/src/ |
| com.adobe.flex.framework:utilities | [Flex SDK]/frameworks/projects/utilities/src/ |
| com.adobe.flex.framework:osmf:swc | [Flex SDK]/frameworks/projects/osmf/src/ |
| com.adobe.flex.framework:spark:swc | [Flex SDK]/frameworks/projects/spark/src/ |
| com.adobe.flex.framework:sparkskins:swc | [Flex SDK]/frameworks/projects/sparkskins/src/ |
| com.adobe.flex.framework:textLayout:swc | [Flex SDK]/frameworks/projects/textLayout/src/ |
Note that AIR-related libraries have similar source structure and locations.
This update to the tutorial features some additions and an update to the Deployment trail:
project.xml file was patched. This problem is fixed.
Thanks, as always, for your feedback.
- Sharon Zakhour
One week after releasing the Android Nexus One phone to the public, Google has released the software development kit (SDK) that allows third-party developers to write applications for the phone. Android 2.1 has several new features including:
Version 2.1 is also referred to as Eclair Maintenance Release 1 (MR1), or API level 7 to programmers. In all, 2.1 has 118 API changes, which is approximately a 0.48% difference compared to the previous version.
Availability
Android 2.1 is currently shipping on the HTC Nexus One. The Motorola Droid (Sholes) sold by Verizon is currently at 2.0.1 but users should expect an over the air update “soon” (which could mean anything from 2 weeks to 2 months). As of this writing, all other Android devices (about 80% of the market, according to Google) are running version 1.5 or 1.6:
Source: Google market data collected during the two weeks ending on 1/4/2010
Eventually 2.0.1 will go away, replaced by 2.1 just as 2.0 was replaced by 2.0.1. If current trends continue, we predict that 2.0.1/2.1 will achieve a 25% market share by February, and 50% by the end of the year.
Note that all programs written using the 1.5/1.6 APIs should work on newer devices, but you should test your apps on all targeted versions and screen sizes just to make sure. Programs written to require the 2.0.1/2.1 APIs will not work on older devices.
When buying a new computer, the conventional advice is to buy the fastest one you could afford. That’s what I did when I recently replaced an aging laptop with a desktop screamer sporting an Intel Solid State Drive (SSD). But now I wonder, for those of us developing software for others to use, are we doing our users a disservice by always getting the latest and greatest?
My IBM ThinkPad T42 served me well for many years but it was beginning to show its age. For one thing, the 40GB disk drive was always running out of space. I used a great program from JAM software called TreeSize Pro to track down where the space was going, but there was a point of diminishing returns.
I upgraded the memory as much as I could, but the Pentium M 1.7GHz CPU running Windows XP had reached its limit. Rebooting took over a minute, and starting Firefox or Eclipse could take 30 seconds or more. Running the Android development emulator was especially painful: several minutes to start one instance, and don’t even think about starting two or more.
After months of reading excellent technical reviews of the Intel Core i7 and Intel SSD’s at anandtech.com and other sites I decided to take the plunge…
A brand new dream development box with a quad-core processor (i7 860), 160GB SSD, 8GB RAM, and a fast video card (ATI Radeon HD4670), and 64-bit Windows 7. At first I tried to order it from Dell, but when they delayed my order into January I decided to go with a local company called Intrex. 3 days later (compared to Dell’s 30+ days) I had the computer.
This box screams.
Reboots are painless. Firefox comes up instantly, almost before I can take my finger off the mouse button. Eclipse starts in a couple of seconds, and the Android emulator, well that still takes several seconds but it’s an order of magnitude faster than before. As a user of this machine, I’m very pleased with it.
And yet…
Suppose I were a Firefox developer charged with speeding up startup times. On this machine, I’d say it’s pretty darned fast and mark it Fixed. But not everyone has a machine like this. In fact, hardly anyone does. My experience is not the same as my users’ experience. By buying a super-fast machine have I become disconnected from the people I am writing code for?
Personally, there’s no question I can be more productive on this box than a slower one. I can justify the purchase by saying my time is valuable, that I can bring products to market faster, and quit wasting time watching the hourglass cursor spin and the disk drive light flash. The solid state disk drive is so fast that maybe I don’t have to spend so much time optimizing seeks and worrying about caching. Now that I have 64-bits and all this memory, I can use that memory for more sophisticated algorithms. Maybe I don’t have to be so careful with how big my data structures are. Maybe I can use higher level languages like Python and Erlang to be even more productive compared to C and C++.
Do you see the trap there? As computers got faster, some would argue that programmers got sloppier. For example, Excel running on today’s hardware is not really faster than Visicalc on MS-DOS even though the computers are 100 times faster. Like a gas, software expands to fill all available space and use all available CPU and disk speed. Users get more functions, but not better performance. And if they’re a little behind the curve on their hardware, they can get much worse performance.
What do you think? Should developers use fast computers for best productivity? Or should we make them use slower computers so that they’ll be forced to make their code fast and small?
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll."The community of developers whose work you see on the Web, who probably don’t know what ADO or UML or JPA even stand for, deploy better systems at less cost in less time at lower risk than we see in the Enterprise. ... More important is the culture: [with] development cycles [no] longer than a single-digit number of weeks."The Foundation needs to both enable, but also to actively lead, the community toward this kind of development... It should take no more than 15 minutes to start a new project (or new projects will go to github). It should take no more than 15 minutes for a newbie to get started contributing to a project (or people won't join). It should take no more than a week to finalize a release (or we'll be left behind). Etc... There's a lot of good technology at Eclipse and a lot of good people in the community, but the software world is going through one of its regular massive waves of change, and the Foundation processes are contra-indicated for being part of that wave. I want to see those processes changed so that the greatness that is Eclipse can participate in the change that is occurring.
Stay tuned here for live coverage of today’s Android press event, being held at Google HQ in Mountain View, California. It’s time to finally separate the truth from the rumors.
Also see: Google’s Nexus One: Is it super? And is there a market for a superphone?
9:53am: The intro slide is showing and the music is blaring. All that is shown so far on the projector is “Android Press Gathering January 5, 2010″.
9:59am: Looks like about 100-200 people are in attendance.
10:04am: Still waiting…
10:05am: Ah, there we go, looks like it’s starting.
10:09am: Mario Quedas of Google relates The Android Story So Far… [9 minutes and I'm already bored, lol]. 20 devices, 59 carriers.
10:10am: People with Android search the web 30 times more than people with “feature phones”. [Good news for web's biggest search engine, yes?]
10:10am: The G1 begat the MyTouch3G, which begat the Motorola Droid.
10:15am: Android’s principles include an open platform, always on applications, and free access.
10:15am: The next step in Android evolution is the Nexus One.
Continue reading: Live coverage of the Google Android/Nexus One event >
An open source organization or company is one that contributes a significant number of developer-person-hours to open source projects.2Microsoft does not contribute significantly to open source projects; Red Hat does. The Eclipse Foundation does not; whereas the Eclipse-centric companies do (IBM being the star contributor). Thus the Foundation itself is not an open source organization: it's a trade association of open source companies, and as a trade association it undertakes activities to support those companies (such as mailing lists and source code repositories).
Sometimes I find myself writing repetitive code constructs without being able to extract common code due to Java syntax hmm… let’s call them peculiarities. ‘Sounds like a job for a live template’, I think, and I simply create it. Here’s how. The documentation has it too, but a good example never hurts.
Let’s suppose you have read/write synchronization in your project, and from time to time you need to wrap a bunch of statements in, say, a read action. This involves putting them into a Runnable and giving the latter to some runReadAction method. Do you still do this manually? You don’t need to, IntelliJ IDEA will help you!
First, find an existing code which already invokes the read action and select it:

Go to Tools menu and choose Save as Live Template there:

You’ll see a typical Edit Live Template dialog with the text you’ve selected. Note that all the class references are qualified there and Shorten FQ names checkbox is on, so the mentioned classes will remain the same no matter where you choose to insert it.

What we want to keep is the external syntax: the method call and the runnable. So remove everything inside the run() method braces and replace it with a $SELECTION$ on a single line. It means that you may select something and it’ll be wrapped in this particular construct.
Enter some abbreviation to easily invoke it each time, and some description (optional, but useful). Finally, the formatting looks not quite pretty, so turn on the Reformat according to style checkbox.

That’s all! Click OK and start using it. Find a fragment you want to wrap into a read-action, select it and invoke Surround With… action (Ctrl+Alt+T). You’ll see the read action template in the list:

Select it and the read action is in there:

Usually I don’t post about rumors but this one seems to have legs so I’ll make an exception. On Saturday Google announced on its mobile blog that it was handing out a mysterious new phone to select employees across the globe. Calling it a “mobile lab”, the device runs Android and enables experimentation with new mobile features and capabilities.
That might have been the end of it, except that rumors started flying about whether this was the mythical “Google Phone“, whether or not it would be sold to the public, and so on. Here’s a roundup of the 10 most believable rumors that I’ve heard. Keep in mind, these are just *rumors*, because Google refuses to comment on unreleased products. I’m sure they don’t mind all the free publicity though.
Rumor #10: The new phone is called the “Google Nexus One”. This is a pretty safe bet because videos of the boot animation have been posted on the internet, and the name Nexus One is clearly visible on the screen. However it might be a code name and not a real product name.
Rumor #9: The Nexus One is made by HTC, and is the same hardware as the Passion, which may or may not be the same as the Dragon. One site called it “Phone 88″. What is it with Android phones and their multiple names anyway? From the pictures, the phone does indeed look like the HTC Passion/Dragon photos that have been circulating, so again, that seems like a safe bet.
Rumor #8: The phone features a 1Ghz (maybe 800MHz) Qualcomm Snapdragon processor, a 5 megapixel camera, and 800×480 touchscreen. Earlier this year, HTC came out with a Windows Mobile phone that used the Snapdragon, and the Motorola Droid has a 5 megapixel camera with a 854×480 touchscreen. So all this sounds reasonable.
Rumor #7: The new device will be running Android 2.1, which some people claim is the same as the “Flan” version of Android (the next version after “Eclair”). I don’t know about you, but I’m suffering a little bit of release fatigue at this point. 1.6 came out, then 2.0, then 2.0.1, all in the space of about a month. Do we really believe there will be another new release in another month? Wouldn’t Google have given developers some hint this was coming, like a new SDK or something? Actually Google seems to love to spring new releases on us without warning. If I had to bet, I’d say it will probably be 2.1 but it may or may not be the same as “Flan”. I expect it will be a relatively minor update, with features like animated backgrounds and (maybe) VOIP (see next rumor).
Rumor #6: The phone does not use the conventional network for voice calls. Instead, it uses Voice over IP (VOIP), just like Skype. All you need is a data plan and a 3G or WiFi network. These rumors seem to be fueled by Google’s purchase of gizmo5, a Skype competitor. The story goes that Google Voice will handle your phone calls and voicemail. While this would be pretty cool and drive down costs for consumers I’m doubtful of this one.
Rumor #5: The new phone will use a WiMax radio, and deliver download speeds much faster than 3G. While it’s true that WiMax is being tested in some areas by different carriers, this particular rumor is not supported by FCC leaks on the Nexus One.
Rumor #4: The phone will be able to function as a WiFi router, much like the Verizon MiFi device. This would allow wireless tethering for other WiFi devices in the immediate area, like your laptop. While it’s true that Verizon has had this on their roadmap for the future, it’s hard to see T-Mobile doing it any time soon. I think it would be more useful to allow the phone to function as a USB hub, or at least support some more BlueTooth profiles, so I can use a real keyboard!
Rumor #3: The phone will be available for sale at google.com for the low, low price of $199 on January 5th. This is oddly specific for a rumor, which lends it some credibility. One version of this rumor says that $199 is the carrier-subsidized price - you have to sign up for a 2-year commitment with T-Mobile to get that price. Another version says that Google itself is subsidizing the price. At least we don’t have to wait long to see if this one is true.
Rumor #2: Google will be giving away one of these to each attendee of Google I/O 2010. Google set up this expectation last year when they gave away the Google Ion phone (which later became the T-Mobile MyTouch 3G at retail). One the one hand, I hope this one is true because I’d like to get a free phone. :) On the other hand, it can’t be good business to give a way $4million worth of phones just to get people to come to their conference. And then people will expect one every year.
Rumor #1: This is my favorite one: All the rumors of the Google Phone are false, and the whole thing was made up by Apple. Why would Apple do this? Well, one reason might be to create a rift between Google and its partners like Motorola and Verizon, who it would now be competing with. Another might be to create a massive, impossible to satisfy expectation in users’ minds that will come crashing down on Google when the phone doesn’t materialize. Ok, I know this one isn’t really believable, but it sounded fun. Better get your tin foil hat on now!
So what do you think - is the “Google Phone” real? It is just another Android phone, nothing to see, move along now… or is it the “Real Android”? Is it a “Dev Phone 3″? And why is everybody getting so worked up about this?
During a recent visit to the Wikimedia Foundation, I had a very interesting discussion about community and change with Sue Gardner (Executive Director) and Erik Möller (Deputy Director). One of the topics we touched on was the video format the Wikimedia Foundation has chosen: the open format Ogg Theora. They spent a lot of time and energy on the format decision because it was a difficult tradeoff: on one hand, choosing a proprietary format (WMF, Quicktime, Flash, etc) would provide immediate access for everyone, but conflict with their goal of "freely available information everywhere for everyone". On the other hand, choosing an open format would limit availability but would ensure the information remains unfettered by a single company. So what should they do?The Eclipse Foundation could play the same leadership role in solving the Tragedy of the Commons. Mike is the charismatic, forceful leader that member companies would follow - in fact, I think he's the only person in the Eclipse ecosystem who could create the kind of corporate investment that is needed - that's why I was a key vote in hiring him at the beginning1. I believe that no single company is willing to step into the resource vacuum because nobody (not even IBM) has the deep pockets that IBM had from 2000-2004 — our only hope of corporate investment to solve the tragedy is a central leadership bringing the major strategic players to the table to staff the core team.
Instead they chose a third route: they chose an open format but at the same time, used their leadership position in information to convince the major browser vendors to include Ogg in HTML5. This is huge. This is leverage. This is change for the better.
Sometimes you may want to quickly generate graphs programmatically and view/analyze those. Examples include, inheritance/type relation diagrams of an object oriented program, function call graphs and any other domain specific graphs (reporting chain of your organization chart for example). I find GXL very useful for this. GXL stands for Graph eXchange Language. It is a simple XML format to specify graphs. A simple graph stating that "JavaFX" language is related to "Java" language is as follows:
File: Test.gxl<gxl> <!-- edgemode tells this is directed or undirected graph --> <graph id="langs" edgemode="directed"> <!-- write your nodes --> <node id="java"/> <node id="javafx"/> <-- now write your edges --> <edge from="java" to="javafx"/> </graph> </gxl>
You can also add number of "attributes" to nodes and edges - like color of the edge, style of the edge and so on. For example, "red" color can be specified for an edge as follows:
<edge from="java" to="javafx"> <attr name="color"><string>red</string></attr> </edge>
Now that we have written a simple graph with two nodes and a single edge between them, we may want to view it. There are number of tools/libraries to view GXL documents -- I've used Graphviz. Graphviz displays it's own native format called ".dot". Graphviz comes with a set of command line tools. One such tool is "gxl2dot", which as you'd have guessed, can be used to convert a .gxl file to a .dot file.
gxl2dot Test.gxl > Test.dot
Once converted the .dot file can be opened in Graphviz GUI and we can export it to .pdf/.jpg/.png and so on. This way you can email the graphs to others and/or publish in your blogs/webpages easily.
The converted .pdf file for the above simple graph is here: test.pdf
I've used GXL graphs in a recent debugging tool related to JavaFX compiler. More on that later...
On November 27th I ordered a Dell Studio XPS 8000 computer with an i7-860 processor and 8GB of memory. My old Thinkpad T42 is getting a big long in the tooth so I needed something new for development and writing. The estimated delivery date was 12/16/2009.
Today Dell mailed me to say the order had been delayed until 1/5/2010! I checked the online forums and found several other people in the same situation. On 12/5, dgoobs wrote:
Dell has, so far, delayed my desktop purchase 4 times. … Makes me think it is time to cancel and order an HP.
On 12/9, snapshot2 wrote:
I too ordered a Dell and had to wait 3 weeks for delivery. Just checked the status and my order has been canceled. Why? waiting for parts to arrive.
Dell uses the “just-in-time” inventory system whereby they have no inventory of parts.
They require their vendors to deliver on a specific date. The “just-in-time” inventory system only works if you have reliable vendors. Apparently, they don’t.
Using Dell’s sales chat, I asked “Brian B” about the problem and he said “It’s the holiday season and we’re getting a lot of orders”. Um, yeah. Before I could ask anything else I got disconnected.
I tried the chat again. “Brian B” answered, but when I told him I was disconnected he asked if I’d like to be transferred to the person who helped me before. Huh? Does everybody there have the same name? Or did Dell do some research and decide that the name “Brian B” somehow gave US customers a warm, fuzzy feeling? In any case, this Brian said he couldn’t help me and I should call their order support phone number instead.
So I called that number, and after a few minutes on hold I got connected to a real person. After looking up my order he said it was delayed because it was waiting on a part.
“Which part?” I asked.
“It doesn’t say,” he replied.
“Can I swap the part with something else that *is* available?”
“Not without canceling and re-ordering the computer.”
“Well if it’s the graphics card you could ship me the computer without the card now,” I suggested, “and then ship the card when it arrives.”
“Our system doesn’t work that way. Besides, as you can imagine, we have to deal with a lot of orders at this time.”
“Is your name Brian?” I wanted to ask.
If you go on the Dell.com web site right now and order a Dell XPS 8000, it says the estimated ship date for a Dell Studio XPS 8000 is 12/24/2009. Sure it is.
If you read our recent posts on ActionScript/Flex refactorings, you might have noticed that UML diagramming in freshly released IntelliJ IDEA 9 works not only for Java. That’s right, you can use it to analyze your ActionScript and Flex classes.

Diagram can be shown either in a popup (i.e. to for quick glance at classes and their relationships), or in an editor tab for a more detailed drill down. Availablility of Show UML popup and Show UML Diagram context menu actions depends on what node is selected in Project view or what element or reference is under caret in AS/MXML file editor.
You can open a UML diagram for a class or package. The former displays all superclasses of selected class, the latter — all classes and subpackages of selected package. This way you may choose whether to inspect classes hierarchy or package contents.
UML diagram shows classes, interfaces and packages as top-level nodes, and members inside parent node. Links denote inheritance relationships between classes or interfaces: implements or extends. With different types of layouts it’s very simple to get a structural overview of classes hierarchy and relationships.

Using UML toolbar you can easily control which types of class members are visible: fields, constructors, methods and properties. Also, you can filter visible members by access type. Elements in namespaces are shown when protected & internal or all visibility mode is selected.

Many of the familiar refactorings are accessible right from UML diagram! You can rename classes or members, move static members, pull members up or push them down. To invoke operations on members, first double-click class node or select it and press Enter or F2. You may also quickly add class supers or inheritors with a context menu action:


To remove unneeded nodes from the diagram, select them and press Delete. To add classes/packages to the opened diagram, just drag the items from Project view.
UML with pleasure!
Every year the Eclipse Foundation hands out awards at its annual EclipseCon conference. Nominations are now open for the next conference, to be held on March 22-25, 2010 in Santa Clara California. Anyone can submit a nomination, and you’re free to nominate your own projects, products, and applications if you like.
The categories for 2010 include:
The deadline for nominations is January 29, 2010. Good luck!
IntelliJ IDEA 9 is finally out, bringing you lots of goodies across the board!
If you haven’t followed the EAP (Early Access Program) or missed the Beta release, here is a quick summary of the key new features and improvements in this release:
Read more about what’s new and download a free 30-day trial today.
Buy or upgrade to IntelliJ IDEA 9 right now.
Oh, and did you happen to buy your IntelliJ IDEA 8 license on or after October 1, 2009? If so, download v9 and upgrade right now — for free!
Start enjoying this latest and greatest IntelliJ IDEA every day — like we do!
— IntelliJ IDEA Team
... an organization founded and funded by businesses that operate in a specific industry. An industry trade association participates in public relations activities such as advertising, education, political donations, lobbying and publishing, but its main focus is collaboration between companies (see "Membership benefits"), or standardization (see "Eclipse industry working groups").It's ok that the Foundation is an industry trade association, but it means that the open source side of Eclipse (including me) must stop wishing for the Foundation to solve the Tragedy of the Commons and find some other way to make it happen. The Foundation will continue to provide benefits to the corporate members, that's fine - I've always been pro-profit. And the Foundation will continue to do marketing around the open source projects - nobody ever complained about too much PR help!
ExecutorService executor = new ThreadPoolExecutor(numberOfThreads, numberOfThreads, //
60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
ArrayList<Callable<Object> tasks = new ArrayList<Callable<Object>();
tasks.add(new MyTask1(..));
tasks.add(new MyTask2(..));
for (Future future : executor.invokeAll(tasks)) {
future.get(); // will rethrow an exception raised by task
}
...
The only drawback of the above approach is that executor will always use N+1 threads to execute your tasks. So, if you need to execute one task, it will take thread from the thread pool and will also block a current thread. When we'll have multiple such requests going in parallel, the number of extra threads is becoming significant.
public class TweakedThreadPoolExecutor extends ThreadPoolExecutor {
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException {
if(tasks.size() == 0) {
return null;
}
List<Future<T>> futures = new ArrayList<Future<T>>(tasks.size());
boolean done = false;
try {
Iterator<? extends Callable<T>> it = tasks.iterator();
FutureTask<T> current = new FutureTask<T>(it.next());
futures.add(current);
while(it.hasNext()) {
Callable<T> t = it.next();
RunnableFuture<T> f = newTaskFor(t);
futures.add(f);
execute(f);
}
current.run();
for (Future<T> f : futures) {
if (!f.isDone()) {
try {
f.get();
} catch (CancellationException ignore) {
} catch (ExecutionException ignore) {
}
}
}
done = true;
return futures;
} finally {
if (!done) {
for (Future<T> f : futures) {
f.cancel(true);
}
}
}
}
...
The only drawback of this approach is that it won't be possible to cancel task executing in a current thread, but in many cases it is a reasonable price to pay for savings on additional Threads. Editing CSS files in Flex applications becomes easier with the help of some new Maia features.
First, completion for CSS selectors, properties, and property values. For example, if you press Ctrl+Space in this context, you get all class names from
a default namespace http://www.adobe.com/2006/mxml + global selector:

If a CSS property has a color format, IntelliJ IDEA helps you to select a color:

You can look up documentation for default Flex CSS selectors and properties. Just press Ctrl+Q in editor or completion pop-up window:

You may easily navigate from CSS properties and selectors to their declarations in ActionScript. All you need is to press Ctrl+B. Note that if there are several declarations to navigate, you will see a pop-up list.

Also, IntelliJ IDEA provides validation of CSS selectors and properties:

Note that these features are available only in CSS and MXML files under a Flex module, or module with a Flex facet.