The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Supporting my windows users Java and C#

Hi.

I am an avid Java/C++ developer in my day job working on both Windows and Linux. However, I am intending to develop an application that is really aimed at Windows users (because lets face it, 99% my target market ARE Windows users) in my own time.

So I'm thinking of writing my application using C#.

My main reasons are mostly because of look and feel of UI.

I don't need to code in C++ because the application does not really require native code performance, per se, and I want a quick development time and to really focus on functionality rather than performance.

With this in mind, my questions:

> Is C# here to stay on future versions of Windows? I'm hoping it is going to be around if I develop in it, perhaps with a bigger presence.

> Java has a JRE, and essentially so does C#. So my install is going to be painful in terms of megabytes either way. However, I can install a JRE along with my Java application easily using something like Install Anywhere - fairly seamless to the user. Can you do the same thing with the C# runtime and make it seamless?

> Is there any value in learning C#? I.e. If my product doesn't go at least I have a skill that people might want day job-wise?

> What version of the IDE should I invest in for developing C# (i.e. latest + greatest)?

> What are the alternatives that people use (non-scripted languages)?

Thanks for any help.

Reg.
Reg Simmonds Send private email
Monday, June 12, 2006
 
 
"Is C# here to stay on future versions of Windows?"

Yup.  It's basically replaced a whole host of technologies (like Visual Basic).  It's here to stay and is already quite mature for such a new platform.

"Can you do the same thing with the C# runtime and make it seamless?"

Yes. 

"Is there any value in learning C#? I.e. If my product doesn't go at least I have a skill that people might want day job-wise?"

A huge amount of Windows development is moving to .NET and C# -- if that's what you want to do, it would be a good career move.

"What version of the IDE should I invest in for developing C# (i.e. latest + greatest)?"

The latest and greatest Visual Studio, which I believe is 2005.
Almost H. Anonymous Send private email
Monday, June 12, 2006
 
 
C# has not replaced VB.  What's replaced VB is VB.Net.  And, no, despite what those who irrationally hate any non-braces syntax would like to believe, Microsoft is not deprecating VB.Net or trying to persuade developers to move over to C#.  Both languages are with us for the long haul.
Iago
Monday, June 12, 2006
 
 
Sorry I meant to say .NET has replaced VB.  You have a nice Visual designer available for both languages, automatic memory management, a large library of available classes and controls -- it's a full replacement for VB no matter which language you choose.
Almost H. Anonymous Send private email
Monday, June 12, 2006
 
 
And if you're going to learn a new language anyway, why not go to C#, instead of yet another 'Basic' named creation?

And I find it interesting that you are so positive that C# and .NET are here to stay.  Microsoft has clearly shown that no technology that they support is "here to stay" for any longer than it takes for the 'next generation' to arrive (whatever that happens to be -- Dos, Windows, 32-bit Windows, Win-32 API, MFC, WinForms, etc).

Even so, you need to support the Windows platform with Something, after all.  It might as well be C# and .NET.
AllanL5
Monday, June 12, 2006
 
 
"why not go to C#, instead of yet another 'Basic' named creation?"

Hehe, I was going to start that particular flame-war but decided against it!  ;)

"Microsoft has clearly shown that no technology that they support is "here to stay" for any longer than it takes for the 'next generation' to arrive (whatever that happens to be -- Dos, Windows, 32-bit Windows, Win-32 API, MFC, WinForms, etc)."

Isn't that contractory? (or are you being sarcastic -- hard to tell)  You can still run DOS applications in Windows XP as well as every other intermediate techology from then until now.  There's a post in the business forum about how the VB6 runtime will be included in Vista.  Do any Microsoft technologies ever go away?!?
Almost H. Anonymous Send private email
Monday, June 12, 2006
 
 
If you know Java then you already more or less know C#.
John Topley Send private email
Monday, June 12, 2006
 
 
I wasn't really being sarcastic.  And Microsoft continuing to support the old technology, even as they bring in the new, is one of their strengths.

I guess I was being a little bitter at Microsoft's dropping VB6, and "replacing" it with a non-compatible language.  That did nullify a few years of expertise building for me.

Though note you can't purchase VB6 anymore (or VB5, VB4, or VB3), even though apps created with VB6 will continue to run in Vista.  Nor can you purchase C++ 1.5, 4.0, or 5.0 anymore.  Nor can you purchase Visual Studio 6, though it continues to work on Windows XP.  And IIS and ASP have gone through a few non-compatible upgrades.

I guess the point I was trying to make was that Microsoft dropping VB6 entirely as a product was a departure for them.  Once they've done that, who knows what VB.NET will morph into in the future?
AllanL5
Monday, June 12, 2006
 
 
Hi.

There is lots of interesting discussion about the merits of VB and C#, but I'm still after answers to my questions... I got a few trinkets of information but am not convinced... Can anyone help further?

Thanks, Reg.
Reg Simmonds Send private email
Monday, June 12, 2006
 
 
If your targeting a desktop app I would go with C++ and Windows Template Library (WTL) instead of C#. You get an updated look and feel without the huge .Net distribution hit. 

C# may be here for the long haul but Winforms isn't.
Phil C
Monday, June 12, 2006
 
 
==>"Microsoft has clearly shown that no technology that they support is "here to stay" for any longer than it takes for the 'next generation' to arrive (whatever that happens to be -- Dos, Windows, 32-bit Windows, Win-32 API, MFC, WinForms, etc)."

Nuttin' wrong with that.

What? Do you really *still* want to be coding 8 bit apps in a single task, character based environment -- on a vastly underpowered chip using a glorified boot-loader? Not me. No way, no how.

Things change, and over the long haul, they change for the better. Sure, there's a step backward here and there -- there's a mistake made, and a lesson learned, but over the long haul ... the march is onward and upward. New and improved. BBF -- bigger, better faster. Really.

It's just the price of modern life. It happens everywhere, not just coding. It's called progress. Without it, we'd still be living in caves wondering where dinner is coming from.
Sgt.Sausage
Monday, June 12, 2006
 
 
"I would go with C++ and Windows Template Library (WTL) instead of C#...  C# may be here for the long haul but Winforms isn't."

Ummm...  WTL and it's GDI unpinnings are just as "gone" as Winforms will ever be.  Is this not ridiculous advice?
Almost H. Anonymous Send private email
Monday, June 12, 2006
 
 
I mean 'underpinnings'..  missing the "der" up there.  ;)
Almost H. Anonymous Send private email
Monday, June 12, 2006
 
 
I'll take a stab at it...

> Is C# here to stay on future versions of Windows? I'm hoping it is going to be around if I develop in it, perhaps with a bigger presence.

That's my bet.  For all that the C++ language is better, the tools and development environment are much much better in C#.

> Java has a JRE, and essentially so does C#. So my install is going to be painful in terms of megabytes either way. However, I can install a JRE along with my Java application easily using something like Install Anywhere - fairly seamless to the user. Can you do the same thing with the C# runtime and make it seamless?

I think there's an expensive third party tool out there, but I couldn't judge it.  Since I have relatively few machines to support, and they all with high speed, I just direct them to Windows Update.

> Is there any value in learning C#? I.e. If my product doesn't go at least I have a skill that people might want day job-wise?

I'd say so.  And it's not like it'll be a challenge, since you know Java.  Start with Java language & similar libraries.  Mix up the keywords.  Borrow VB6 properties and events and development environment.  You're 99% of the way there.

> What version of the IDE should I invest in for developing C# (i.e. latest + greatest)?

2005 is a big, big improvement.  Invest in the *free* Visual C# Express 2005 to get started.  Then when you've got your feet wet, read up on the higher end options and see which ones seem useful.  Personally, for what I do, the free one's almost good enough.

> What are the alternatives that people use (non-scripted languages)?

Your other big option is Delphi, I think.  More like VB6 in a lot of ways, including deployment issues, but with real OOP.  .NET's probably slightly more stable, more productive, but not as easy to deploy unless you're relying on a CD or broadband.
Chaz Haws Send private email
Monday, June 12, 2006
 
 
Ok, it's about time for a posting of a Java lover! ;)

If it's only about the Look and Feel, why don't you use jGoodies??? (http://www.jgoodies.com/products/screenshots.html)

I really can't understand why everybody want's to Code C#, when it is about Microsoft's OS. Ok, maybe the OS integration is better... but that's not the point here.

Another point is that more and more companies replace their windows machines with linux machines... Wait 5 or 6 years... and those statistics you mentioned above, will be history. Desktop Linux ist coming. And if you want to code for both operating systems to be save in the future, build you app in Java and not only because you are a Java developer, yet.

Wait until Mustang (Java 6) which is absolutely Vista compatible; regarding the Look and Feel. ;)

JAVA ROCKS!!!

James T. Fuhl
James T. Fuhl Send private email
Tuesday, June 13, 2006
 
 
"If your targeting a desktop app I would go with C++ and Windows Template Library (WTL) instead of C#. [...] C# may be here for the long haul but Winforms isn't."

As opposed to the WTL which is not even supported by Microsoft anymore? Yeah, great advice there...

I don't know why I even bother posting this anymore since everyone just keeps ignoring it, but WinForms is _NOT_ obsolete with Avalon/WPF. The first WPF release is far from a complete GUI library, it's basically just the drawing subsystem that gets replaced entirely.
Chris Nahr Send private email
Tuesday, June 13, 2006
 
 
> why don't you use jGoodies???

Because it keeps crashing JavaMonkey, so I I have to assume it isn't fully accessible. Under the UK's disability act, this make it a no-go for anyone selling to the public or working for the government.
Adrian
Tuesday, June 13, 2006
 
 
Never tested it with Java Monkey.

But if my clients want a "good-looking" interface. I use jGoodies... and everybody was satisfied.

But if that may be a problem then it's OK to use C#... Or just take the windows Look and Feel...

Everything will change with Mustang. ;)
James T. Fuhl Send private email
Tuesday, June 13, 2006
 
 
"Desktop Linux ist coming."

a) He already said that he wants to go for the Windows platform
b) Desktop Linux has been coming for a long time and, depending on who you ask, is already here. This doesn't change the fact that I'm sitting in a building with over 250 PCs and 120 servers and _every_ desktop is running Windows and the servers are a combination of Windows and Unix. Linux is not used anywhere in the company (very large UK based multinational).

On the subject of the longevity of C#, some of the aforementioned desktops are running Win 95, so I wouldn't bet on any technology going away rapidly.

From where you are now (Java / C++) C# is a short hop whereas Delphi is more of a jump, unless you know (Object) Pascal as well. There used to be a free version of Delphi available to download so you could download that and VS2005 and try them both out and see what you prefer, but the C# will almost certainly be less effort.

As far as the runtime goes, including it on a CD is easy enough (I don't know how you are planning to deploy your software), but it is a fairly sizeable download. More and more people have already downloaded it, but it is far from universal, so consider your target market carefully before you go down that route (i.e. will they resent having to download the runtime as well as your software?).
Paul Brown Send private email
Tuesday, June 13, 2006
 
 
Use WTL and you don't have to worry about MS throwing you overboard. Coming from a Linux background the use of open source WTL should be very comfortable.
Phil C
Tuesday, June 13, 2006
 
 
I think there are couple of solutions to your problem.

1. Use Java, but instead of swing use SWT from eclipse.org . The look and feel you get on Windows is exactly like Windows applications. It doesnt suck like swing :)

2. Use C# but in your installer dont ship .NET runtime, but in installer choose to download the .NET runtime from internet if user doesnt have .NET runtime. This avoids download size of your MSI and is useful if user has already .net installed.  If user doesnt have .net installed, you can give option to download your MSI having .net runtime.  Ship two different MSIs.

3. Use Qt from trolltech for your UI development. This is C++ cross platform framework. The total size of DLLs you need to ship is around 6MB (unzipped).  Your application will still be cross platform and will work on Windows and linux.

4. Use just VC++ and windows API to develop your application and ship for windows.  There is an open source library which emulates windows behavior on linux. You can compile your code for this environment.  Google is using this for porting its applications to Linux. (I dont remember the name of the framework, please google it).

I hope the above solutions help you in choosing you what is suitable for your application.
Gopinath M.R. Send private email
Tuesday, June 13, 2006
 
 
One VB.Net and C#... the important difference is cultural. VB.Net programmers will tend to come from a VB background where as C# programmers will come from a C++/Java/other OO background.

http://www.codeproject.com/dotnet/CSharpVersusVB.asp
RandomPunter
Thursday, June 15, 2006
 
 
"One" should be "On" above.
RandomPunter
Thursday, June 15, 2006
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz