I’m about to start a programming project at work that will probably require 3 developers working for about a year. /WAG All of the programmers are experienced developers with around 10 years experience. The problem is picking a toolset to use. In the past, we have been an Oracle shop and that meant using Oracle Forms. Oracle has made it pretty clear that they are done enhancing Forms and that their future is Java and ours should be too.
I have to decide which platform would be better for development, Java or VB.Net given that none of the programmers know either tool. I’m not really sure what questions I should be asking to make this determination. One thing that I’m most curious about is learning curve. Is one easier to become proficient at?
I’d appreciate any advice as to where to look, what to ask, anything at all.
The backend hardware will be Oracle on Unix if that makes any difference. We run PeopleSoft which will eventually become Oracle written in Java, but that could take years to happen.
Unless there’s a specific technical reason for using VB.Net, I’d say go with Java. It’s easy to learn, teaches good object-oriented techniques, and is a language that has an actual high-paying career behind it.
I’m not certain how Forms worked–so it may be that you would be more used to the code + widgetting style of VB as opposed to the code-only of Java. But beyond that, I would say that you’re best to go with Java.
If you’re going to be dealing with Sun software and are already always following all the Sun information, then you might find it easier to put stuff together that works correctly with Oracle the first time with Java–as that would probably be the language in which all the examples and helper objects will be written in and suplied for.
VB on the other hand–once one gets over the nifty factor of widgetting–I would rather have a pure code solution as it’s less dependent on the whims of the people who made my development environment (so I can split it how I want to be organised intelligently, not have to worry that the next version of the IDE will cease working with my code, etc.) So even if going .NET, I would probably recommend C# first for anything more than some quicky demo apps.
Main issue with coding in Java is the program will be slow and pretty much always just slightly wonky on every platform (though a different wonky for each!) But if slick-looking and performing GUIs isn’t a large concern, then this probably isn’t an issue.
VB.Net is cross-compatible with all other Dot Net platforms, including C#. The biggest disadvantage of Dot Net is that its engine will have to be installed on users’ machines, and a special file is needed for non-XP environments.
Interestingly enough, I just started a job where they faced a similiar decision not too long ago.
We have a system written in Java. They knew it needed to be replaced, and faced the choice of Java vs. .NET. Ultimately, they went with .NET because it simply provides WAY better tools & documentation.
I’d never really done much with Java, but have spent the past month working on the old Java codebase. I can’t believe how far behind the tools we’re working with are; MS had a better IDE ten years ago. There’s simply no comparision between the two - I’m much more productive working with MS tools, and it’s not just because that’s my background.
I’ll echo what others are saying about VB vs. C# - go with C#. It’s very, very close to Java syntax, and a really nice language to boot.
Hey, I was going to say that. So I’ll include a link to it: www.jetbrains.com. Idea is the only Java IDE I’ll use now. It’s very easy to learn, and it has so many features that increase my productivity without getting in the way, that it’s just amazing.
I don’t think that tool availability and features should be the priority when deciding on which technology to use, but even if they are a priority Idea keeps Java right in the running. Personally, I’d also agree with those who recommend going with Java, it’s just more versatile.
Quite true and it is a real pain. But the same is also true for Java - the client machine must have the Java runtime environment installed to run your Java app.
A lot of C# people have been advising against VB.NET in favour of C#. They are correct but not for the reasons they give. Both VB.NET and C# compile exactly the same and run under the Common Langauage Runtime. There is no difference in run time efficiency or functionality.
But career wise it would be wise to choose C# simply because many of your colleagues (including prospective employers) are software snobs and will tend not to take you seriously as a VB programmer. That is why after many years of VB.NET development I am now switching over to C#.
Let me disagree with all of this, point by point, sorry:
I’m not sure what “cross-compatible” the first sentence means – C# is a language, not a platform, and VB.NET code will certainly not compile in a C# compiler. Sure, you can link them together, but most languages can interlink these days. Java can be linked with VB.NET, too.
The special file is needed on XP, too; and there are two subtly different versions of the .NET framework to support, depending on how good your customers have been about keeping up with their Windows Updates. You’re going to have to install the one you want regardless of OS.
Finally, there’s the cross-platform issue: “.NET platforms” really means only Windows. There’s the Mono project to move some of it to other OSes, but it specifically doesn’t include Windows Forms yet, which is something the OP will need.
Now my own take on it (25+ years of Software Development experience):
Java or VB will get you a job, if that’s a criteria. Java runs on effectively any operating system on earth. VB runs on one (admittedly the most popular desktop one). In my not very humble,opinion, anyone who has the choice to write in a cross-platform manner–and does not–is doing themselves and their employer a grave disservice. Sure, it’s easy to say “we don’t care about anything other than Windows” now, but will that be true in ten years? In twenty? I’ve been on any number of projects that wanted to switch to cheap Linux servers to run something, but someone had written 25K lines of code in VB or C#, and so we’re stuck with Windows licenses…again.
By all means, learn both (they’re conceptually similar languages, anyway, learn one and pick up the other in a week or so, assuming their not your first languages). But assuming that your needs in the future will be identical to your needs today violates the key tenent of Software Engineering: design for change.
Pretty sure he [Liberal] was referring to the fact that VB.net and C# both compile down to the same bytecode, highlighting the fact that both are as efficient (or inefficient) as each other so choosing between the languages is just choosing which syntax you prefer.
I could be wrong, however, and don’t wish to speak for Liberal.
If you’re new to C programming and/or object-oriented programming, C# (or C or C++) is a tough way to go. I love C/C++ like a brother, but it’s not something I’d throw at a newbie – it’s a language that will merrily let you shoot yourself in the foot without a second thought.
And really, if you’re going to go with C#, why not just use C++ instead? C# is just C++ with the serial numbers filed off so Microsoft can claim it as their own (and lock you into their proprietary system for life, as Timewinder points out)…
How familiar are you with the entire .NET philosophy? The notion that programming languages can interlink is utterly wrong and this is what .NET was specifically designed to address. Sure, java RMI can theoretically link with C and variants, but I would like to see you get a system running Java, Perl, C++ Lisp and Fortran running together, sharing complex data structures without hundrends of lines of spaghetti code. That is what .NET promises to do.
I gathered from the OP, that this would mainly be a internal type project given that they were originally considering Oracle forms. The .NET runtime is slightly larger than the Java runtime (something like 40MB vs 110MB IIRC) but more people have java AFAIK.
cross platform is all very well and good until you try and do anything non trivial in a real world enviroment. It depends on the real world application of the software in the end but, IMHO, the benifits of cross platform development are usually overstated.