Pages

Saturday, February 24, 2007

F3, Sun's new declarative scripting language for the JVM

F3 a new scripting language from Sun, looks pretty interesting and seems to be a direct statement to Microsoft's Windows Presentation Foundation (WPF). I've been using WPF professionally (getting paid for programming in it) for about 3 months now. It's pretty cool stuff.



I think Sun could have something here if they made Swing programming easier and then built up infrastructure around animations, transitions, graphics operations, transparencies, reflectiveness, etc. that WPF does so well. If all of that can be deployed to the web via applets and Java WebStart and works reliably, then Sun would have a real winner on its hands. As I've previously stated, I'm not a raving fan of the AJAX programming model, but no one until recently has come up with anything better for richer clients on the web. Now all of sudden, Adobe's opening up Flex and bringing on Apollo, Microsoft's pushing WPF, and now Sun is sweetening the pot with easier Swing programming with F3. I've been very impressed with Swing performance in both Java 5 and Java 6 on Windows and Linux platforms. Hopefully Java 7 will continue this trend.



http://ajaxian.com/archives/f3-suns-new-declarative-java-scripting-language



http://blogs.sun.com/chrisoliver/category/F3



http://blogs.sun.com/chrisoliver/resource/f3.html





powered by performancing firefox

Thursday, February 22, 2007

C#/.NETAnnoyances, part 2

Compiling and building in .NET results in DLLs, not loose bytecode or IL. When your project gets large, it can take a significant amount of time to build all the dependencies. You really see this when doing a lot of NUnit testing. I like to go back and forth between code and NUnit (using test-first programming), and it becomes a real pain when you have pauses all the time for building DLLs because of one change. Our .NET solution is composed of 16 projects, so a change to the domain layer project can cause the building of many other DLLs. I now appreciate the incrementalness of Java with loose .class files or with Smalltalk with the image file. Yeah, the C# compiler is blazingly fast, but it does take time to build DLLs. .NET programming yields a much different development experience when compared to Java.





powered by performancing firefox

Wednesday, February 21, 2007

C# Annoyances, part 1

  • Namespaces don't restrict where source file resides in folder structure on filesystem: Source files can live anywhere and have any namespace. Nothing in the language restricts where source files reside based on namespace. Refactoring becomes a real headache, with lots of manual changes to maintain some semblance of organization.

  • Interfaces cannot have constants: No way to static import constants into source files.







powered by performancing firefox

Saturday, February 10, 2007

Flithy rich clients, WPF XBAP and Java applets/Java WebStart

For the past two months I've been immersed in the world of .NET, C#, Windows Presentation Foundation (WPF) and Windows Communication Foundation (WCF). This immersion resulted from a failed attempt to build an AJAXified web application using ASP.NET AJAX tools (all the previously codenamed Atlas stuff). So far, the WPF XBAP experience has been far superior to the AJAX web experience, both on the development team and the customer. Initial conclusions from this 4.5 month gig: AJAX web applications are fine for simple applications, but it's not suitable for something as complex as a clinical care management application. Our domain model is huge and thus there's a lot of information and screens that need to built. The WPF XBAP deployment model has been boon to our productivity and the customer really likes the user experience and performance of the XBAP.



This situation has gotten me thinking that Java has most if not all of this stuff in the form of applets and Java WebStart. The Java Runtime works on nearly every platform imaginable and both Swing and SWT are more than performant in their current incarnations (Java 5 and 6). I wonder if applets and Java WebStart won't be considered more often in the coming months and years for deploying complex rich clients to the web. I've had excellent success with both applets and Java WebStart on my Ubuntu Linux and Windows XP systems. Java 6 added support for OpenGL in Swing, so some of the neat animation and effects features found in WPF may be doable in a cross-platform manner in Java.



Whether its WPF XBAP or Java applets or Java WebStart, I don't look forward to working AJAX anytime soon. I'm feeling underwhelmed by the mishmash of technologies and web framework involved in that sort of solution (CSS, JavaScript, HTML). GWT is about the only thing that gets me excited to do web development these days, mainly because it hides all the crufty JavaScript, HTML, DHTML, CSS crap from me and allows me to work in Java all the time.





powered by performancing firefox

Saturday, February 03, 2007

Initial thoughts on .NET 3.0 and WPF

Well, it's been about a month of using .NET 3.0 and WPF. WPF is cool, though it does seem to have some rough edges. A DatePicker seems to be omitted from the WPF component palette. I would have thought that would have been a given. I'm using WPF at work and we've had many issues with XBAP deployment and executing under partial trust. Code signing and deploying the signed application seems to be an area that was neglected by MS. Very painful at the moment. The Java Plugin and Java Web Start do the certificate and code signing much better. On the plus side, animation and effects are very cool and easy to use. The jury's still out on XAML. I see why they went to XML declaration of the UI, but damn, make sure that Visual Studio 2005 understands the XAML consistently. It seems to have issues with XAML, and I'm using the WPF/WCF CTP for Visual Studio 2005. All in all I give it a thumbs up. Hopefully MS will improve and tweak it aggressively over the coming months.





powered by performancing firefox

Using Performancing Firefox add-in for blog entries

Just trying out the Performancing Firefox add-in. Seems straightforward to use and works on Firefox on Linux.





powered by performancing firefox