Showing posts with label C#. Show all posts
Showing posts with label C#. Show all posts

Friday, 23 July 2010

I wonder how this will pan out...

Well, I don't think Microsoft will be loosing much sleep over it, but it appears that two unrelated situations mean I'm going to start looking into developing Android applications rather than for Windows Phone, at least in the short term, allow me to explain:

The first culprits involve the decisions Microsoft are taking with the direction of Windows Phone 7. It started off with the removal (or is it actually more accurate to say omission?) of Cut and Paste functionality. From articles I've been reading recently this is down to a lack of time for getting it developed by release time, rather than not knowing how to implement it. As a friend from Nokia commented "What, were they worried they could do cut and not paste in the time available?".

The lack of C&P was originally sold to developers as a conscious decision ("A phone doesn't need C&P" - Really? Then why write Office Tools for it?), now we're told "it's coming later". Not the end of the world, but frustrating. Still, I agree it's better to get it right than put in something that's buggy or badly designed and then be stuck with it forever more.

The killer move, for me, is the apparent lack of any way of side-loading applications. As is the case with iOS, you get your applications from Windows Marketplace or not at all. That's essentially shut me out. It's all very well running anything I code in a desktop emulator, but then I may as well have just written a desktop application. If I can't actually get it onto a phone (and possibly those of my friends) what's the point? This is the number one reason why I've avoided Apple phones all this time.

Then there is the work related chain of events.

When I started out at my previous job the plan was to move into C# (as I believed the role required, it's certainly what was advertised and what I interviewed for). Previously I had been working in Java but I was happy to move to C#, it's a great langusge. Being a Java developer a large personal application I had been working on I was also written in Java. When I "moved" to C# I started porting my code over too. Doing such things works as a good aid in getting to grips with a new language or language features.

Now I'm going back the other way to Java as the primary language in my work role, so guess what else I'm now planning on doing? [Moving my application back to Java]

Here's the killer: Just as I was hoping the C# code would allow me to share core components of the application between Windows, Windows Mobile and Phone, and possibly web sites, it turns out that the primary development language for Android appears to be Java.

So now Java potentially gives me access to Android Phones, The Android OS (for Laptops, Slates, etc.), and with a little work (hopefully not too much) Windows, Linux, MacOS, possibly even MeeGo. Oh, and I believe web servers can also run something called servlets too. Oh, and just for fun, the Windows Mobile phone I currently have includes Java too... oh, and I know S60 used to run Java. Wow!

The killer which I'm brushing over is obviously that there will be an incredible amount of work to customise the user experience and display for each system, possibly this could be the lions share of the work, but I do at least take some comfort that at least some of the core business logic may be sharable between systems.

Looks like until my priorities change again this is the logical route for me to get back into Java in my spare time above the demands of work.

So now the new laptop has arrived one of the first things going onto it will be a shiny new install of Eclipse and the Android SDK. Oh, did I mention that's all free? That's possibly a little unfair a comparison, the Express versions of Visual Studio are excellent (that's one of the downsides to all this, I find the Visual Studio IDE an absolute joy to use. For Java development I prefer NetBeans, but since I'm on Eclipse at work, and most of the Android documentation references Eclipse I may as well use that).

Will you ever see any of these fruits of my labour? probably not (almost certainly not), but the point is the more I play, the more I learn, and as long as some of that is relevant I end up getting something out of it over and above the hobby side.

Now, of course, I'm reliant on Oracle not screwing things up with Java (well, no more than Sun managed at the very least).

Fingers crossed.

Thursday, 17 December 2009

Drawing to a new conclusion...

As those of you who read my various other web sites (and the earlier incarnation of this blog) may be aware, I started a new job at the end of April this year which resulted in me moving from a Java (and occasionally SQL) developer, on to C# (via Microsoft Visual Studio 2008) and back to (what has become over the years) the nightmare of Delphi 5.

Delphi, specifically version 5 was way ahead of the crowd in it's time, unfortunately that time was 1999. I used to love Delphi, it was so advanced compared to similar offerings such as Visual Basic that anyone who had used it seriously didn't want to go back to other languages unless they were offered a seriously large pay-cheque to do so.

Then a series of events happened which saw Delphi get left behind, the two main (from my perspective) being:

1. Java arrived and offered the opportunity to program in a new object oriented language that allowed code to run across different platforms. Many Delphi developers moved over to Java, and by using JBuilder which also originated at Borland, we felt at home in a familiar IDE too (versions 1 to 3 of JBuilder were written in Delphi, JBuilder 3.5 was the first native Java IDE for JBuilder).
2. Anders Hejlsberg was poached from Borland by Microsoft and as a result the lead architect had gone. Don't get me wrong, there were a lot of very talented people at Borland, but despite this there was always the perception (accurate or otherwise) that after Anders jumpred ship, the product was left in disarray.

Delphi was never as popular again.

This is all a long time before the .Net platform, and more importantly for the remaining Delphi developers, C# started shipping. In fact, Anders Hejlsberg was the chief architecht of C# after his J# language, understandably, upset Sun, so morphed into Cool, which was eventually released as C# (at least that's how I remember it).

Despite remaining a solid language, Delphi started to stagnate and fall behind Java and C# in terms of features and the integration of new technologies at that time. Although Delphi version 7 was a particularly good release (as far as I remember, was it version 4 that was always rubbish, even after two service packs?) it just wasn't enough. The job ads for Delphi were starting to decline, and its hey-day was now behind it. As a develper, that raises some concerns, and for me it was time to move on.

Java became my language of choice. Not only was the JDK free, but I'd been playing around with it since late 1996 in the version 1.0 builds. So it was that I moved to a job offering cross training to Java from Delphi, which after some complaining eventually happened.

And so Java started to pay the bills as well, if not better, than Delphi had in previous years. However apart from a few notable times (such as when James Talbot introduced me to the Spring Framework, thanks James) Java development was never as much fun as Delphi in those early days.

Don't get me wrong, I like Java a lot, but it rarely had the comparatively instant gratification moments that Delphi often provided. I think a lot of this can be down to two points: My Java programming involved little Swing (or indeed any visual) work, so whilst it was immensley satisfying to get JSP being constructed from a web server, or process huge amounts of financial data, it didn't grab my imagination in quite the same way. The second problem is that Java does so much I could never hope to be comfortable with it all. It is true that this is the case with Delphi (DCOM required me to grab a book and ISAPI extensions have never been produced by this particular mortal) and also C#, but with Java you always felt like you should know it all, it's not enough to just be aware it exists until you need to use it.

So now I'm spending a proprtion of my work time developing in C#, and to my great delight I find it has some of the same highlights as Delphi used to, only more applicable to the world of now. I don't wish to be unfair to the latest versions of Delphi, which I believe are very good, but the whole community around C# is massive, and it's not the dog of a language that Visual Basic was (is?)

I'm now re-learning how to implement things like threading in yet another language. I don't regret this for a moment though as not only may the approaches to some things have changed over the years, but I also believe that in doing this you always get a little deeper understanding, and hopefully wash away a few of the bad habits you may have picked up over the years.

One of the new areas I'm interested in investigating further is the Windows Presentation Framework (WPF or Avalon to some). This looks similar in many basic ways to Swing in Java, only it feels like a later revision. As a result hopefully I'll be able to take back some of what I learn to future Swing applications.

WPF is still quite new (having been released alongside Windows Vista) and the plan is eventually to make this and Silverlight one and the same thing (or so I believe, at the moment Silverlight uses a subset of WPF).

The down side on this is that a lot of the announcements about Silverlight 4 seem to be moving away from cross platform solutions towards Windows only technologies such as COM. I guess time will tell on that front.

WPF is also a core component of Windows 7, so there's significant opportunity there. Also, I believe, the Windows Mobile 7 UI will be rendered in WPF... that will be awesome if/when it happens. And if they start to add the tools into Visual Studio Express from installation then the uptake of WM7 will only improve in my opinion (you can code Windows Mobile Apps without Visual Studio, but it's a lot more complicated without Visual Studio Professional of above. See my later Windows 7 follow-up post in a few days for more of what I think about this).

There's lots of new things being offered by .Net and C# that I need to look into, if not become an expert in, but just to be aware and not completely ignorant of them. The way I'm approaching this is far more relaxed than Java, so hopefully it will be more fun and I'll achieve even more, then take some of the positives back to Java some time in the future.

At last I am once again excited about the possibilities. I just need to shed some (or all) of this Delphi work to give it more of the time it deserves. Oh well, needs must.