Archive for the 'Java' Category

Structure 101 : Really understand your Java, C and C++ Code

Friday, July 27th, 2007

Headway Software have just released a new version of Structure 101, their graphical tool for analysing the internal structure of software. I did some work with Headway way back in the day and have always loved this tool. If you program in Java you should check it out.

Java and the GPL License

Thursday, November 23rd, 2006

Several commentators have remarked that Sun’s decision to make Java available under the GNU Public License is unusual. Why did they not use the standard Sun CDDL license? Well the CDDL was crafted with a specific some specific goals,

  • Allow Sun to Open Source Solaris
  • Prevent Solaris key features from leaking into Linux by applying an incompatible license
  • Allow relicensing with Apache-like flexibility especially to (Sun would love Dell to ship solaris on their servers)

So why the GPL for Java. Well despite all kiss and make up shenanigans between Sun and Microsoft, Sun would still dearly love to stick it to Microsoft in a big way and it has always seen Java as the key tool to pick the Microsoft lock on the market.

So the thinking goes, if we CDDL it (CDDL is a variation on the Mozilla license, which is a variation on the Apache License) then Microsoft gets to grab the code and do any number of things that would ruin Jonathan Schwartz’s day e.g.

  • Fork Java and create an incompatible version that only runs on Windows (they tried this before)
  • Swipe any cool virtual machine technology that Sun has developed and plug it straight into the Microsoft C# engine
  • Gratuitiously extend Java so that developers are sucked into building applications that only run on Windows (a pretty standard Microsoft tactic)

The GPL prevents all this because the highly integrated nature of most of Microsoft’s technology means that the they key GPL constraint of linking to a GPL component entails extending the license to all linked components means they would have to open source most of the .NET framework. That is not going to happen anytime soon.

Its a double whammy for Sun because practically all the compilers on Linux are GPL licensed, so they dovetail nicely into that collection. Who’s not to say that Java could eventually migrate to the GNU backend so that Java just becomes another personality on top of that engine. They would reap huge portability benefits for very little work.

Tricky one for Microsoft, they can ignore Java and watch as the rest of the platform work (most importantly mobile) embraces this new language, but that won’t work becuase the mobile platform is a key plank of Microsoft’s strategy going forward. Or they could adopt it properly as a Visual Studio language, but it would always be a second class citizen becuase of the linking restriction.

Damned if you do, damned if you don’t. Almost makes you feel sorry for the poor sods, especially after stuffing their whole  Visual Basic community with VB.net.

Which development language would you use?

Sunday, September 3rd, 2006

Joel Spolsky yet again seems to divine whats in my head and articulate it ten times better than I could, when talking about what programming language you should use for your development project.

When I started Secantus (now PutPlace.com) at the start of this year we had several candidates for development,

  • C#/.NET
  • J2EE
  • PHP
  • Ruby on Rails
  • Python
  • Perl

We had a few constraints and some previous knowledge that allowed us to make some rapid eliminations.

  1. We wanted tight integration with the local file system (Windows, OS-X and Linux, and mobile phones to follow)
  2. We wanted to produce a downloadable component that ran on the users local system
  3. We wanted a good set of infrastructure libraries so we weren’t constantly reinventing the wheel
  4. We wanted to make sure to choose a technology that wouldn’t have investment partners spitting the dummy

Tight integration ruled out Java due to its execreable I/O libraries. .NET fell at the OS-X hurdle. PHP is really only suitable for webside applications and even then its dire for writing daemons. Ruby on Rails was a contender, but its just a little to immature and still reeks of its UNIX/Linux heritage. Perl I like personally, but the OO support is pretty awful and the risk to a project while they have the engine out on blocks building the next version of the language was too great.

That left Python, Python! I hear you say? Well the language is nearly 15 years old, its got the sweetest syntax, great platform support (including Nokia phones), wonderful infrastructure libraries and a Rails like environment in Django.

We’ve been using it for 6 months now and are very happy with it. I expect to incur some recruitment costs in converting existing Java/.NET programmers to the language, but this is a small price to pay for the flexibility and portability that Python buys.

Will you blog for software?

Wednesday, June 28th, 2006

Richard Rodger is making a sweet offer on his blog. Download his software (it does CSV amd XML file mangling), blog about it and get a free license.

He says,

You can write whatever you like. Tear us to shreds or sing our praises. It’s all good. We just want links :)

Go on, you know you want to…

JDiskReport : du for mortals

Monday, May 22nd, 2006

If you are an old UNIX hacker like mean you’ll have come across the du command. Its short for Disk Usage. Well du is fine for C programmers but the rest of us probably would prefer a gentler, friendlier tool. Enter stage left JDiskReport a wonderful little Java utility that scans your disk at any point you choose in the file tree and generates nice graphical report of disk usage in either a bar pie chart,
PieChart

or as a bar chart,

FileDistribution

You can also get a date modified distribution,

Modified

and a file size distribution,

FileDistribution

Final sweet spot, it runs on just about anything.

Iona Celtix Links

Wednesday, May 10th, 2006
  • Freshmeat announcement page (update : fixed borked link)
  • Celtix Home Page
  • Product page from the Iona Website
  • The Celtix Demo page

BlueJ - A Teaching Environment for Java

Wednesday, March 15th, 2006

BlueJ is a an IDE for Java specifically designed for teaching programming using the Java programming language. It eschews the (Eclipse, NetBeans) Boeing 747 cockpit user interface approach. Instead, it adopts a clean and simple interface that focuses on writing and understanding code.

Its simple, but it works.

Don’t take my word for it though, James Gosling is also heavy booster.