Pondering the dev tool landscape from an outsider



Hello folks,

My apologies in advance, this is a somewhat lengthy post...

I've been lurking around these newsgroups for some months and purchased
a Turbo Delphi Pro license a little while ago. I've had some time to
play with Delphi, and I'm now mired in a quandry trying to decide my
best path for continuing development on an existing VB6 application.

I am not what you would consider a professional programmer, since I
lack any formal training (other than a couple of comp sci classes I
took while earning my degree in theatre!). However, the company I run
makes its business by developing and selling Ethernet-enabled motor
control devices and control software for use in live entertainment
(musical performances, etc.). We split our time between developing
electronic gadgets, firmware, machinery, and desktop software.

Our main desktop software was originally developed in VB6, and has
served us pretty well for the past several years. However, we are
faced with updating the software for the next major version and I'm
trying to make the most prudent decision regarding which platform to
use. This is a process I've been looking at casually for well over a
year, and has been back-burnered a number of times as more pressing
needs required attention. I've been seriously considering: Java with
the Netbeans RCP, Delphi, and VB/C# .Net.

Over a couple of months of sporadic work, I've gotten about 20% into a
Java port leveraging the Netbeans RCP. Though I'm somewhat pleased
with the result, I'm still plagued with enough doubt to lead me in a
vicious circle of constantly evaluting other platforms. As I've read
posts from other folks in this newsgroup, it's apparent that many
people here are well experienced in all of the same platforms I'm
considering. I'm hoping to hear some words of wisdom to help me put my
doubts to an end and forge forward with development on the best path.

The application requirements can be met by any of the tools in
question. It controls a network of motors via TCP sockets. There is a
fair amount of background processing happening all the time, so the app
must be multi-threaded (currently implemented as an ActiveX COM server
in VB version). The main GUI isn't flashy, but has a tree view, grid
view, and a 2d real-time schematic that depicts the scenery as it moves
around on stage.

So, from what I've learned throughout my meanderings the tools stack up
like this:

***Java (with Netbeans RCP)***
Pros:
* Extremely well documented. Easy to find answers to questions.

* Vast class library. Many times things you want to do, are already
implemented (if you can find them).

* Swing is a very flexible & powerful GUI toolkit with a well-designed
API.

* Cross platform.

* Garbage collection relieves some responsibility.

* Easy sockets & multi-threading.

Cons:
* Somewhat convoluted. As a gut reaction, it takes 2x-3x the amount of
code to get something done compared to VB. I'm sure it's cleaner
programming, but every task requires a long chain of classes &
interfaces.

* Swing is almost *too* flexible. I've been using the Netbeans Rich
Client Platform to get a basic framework to give some guidance. The
Netbeans RCP is pretty good, but it is also complex (like the base Java
libraries). Unfortunately, unlike the base Java libraries, the
Netbeans RCP isn't terribly well documented which can be frustrating.

* Hard to start & stop development. The nature of my work requires
that I switch gears to other disciplines fairly quickly (we're a small
shop). Because of the general complexity of the Java libraries and
Netbeans RCP, I've found it very hard to come back to coding after a
week or two of troubleshooting machinery in the field. It takes me
several days to get back in the swing (no pun intended) of things. I
never had this problem with VB, it was pretty easy to pick up where I
left off. Perhaps this is a language issue, but I think it's more an
issue of the framework. VB was small in comparison to Java. You could
keep the majority of what you needed to know in the back of your head.
Trying to remember how to paint bold text in a JTable in Java sends me
thumbing back through my code to find the various subclasses required.

***Delphi***
Pros:
* Feels familiar. It doesn't seem terribly different than VB6. In
fact, in many ways it's the VB I wished I had (though I didn't know
about it during our version 1.0 development!) It's got a good mix of
procedural programming and OO.

* Good class library with source code. I like that I can see what the
VCL is doing under the hood. VB often had too much black magic.

* Easy GUI builder & tight IDE integration with the language. Some
very convenient and rich visual components.

Cons:
* Proprietary language. I feel a bit burned by the VB6 debacle, and
that makes me gunshy of tieing myself to another single-source
language/tool.

* Documentation isn't so great. The online help is not very helpful.
The books available are good, but few.

* Weird vibe surrounding the company & future development. There's
obviously a lot of history between Borland and the customer base, I'm
not sure what all has happened of the years but there's a tangible
bitterness towards the company.

***.Net***
Pros:
* Possible Interop strategy to gradually port the VB application. I'm
not sure if this is techincally smart, but it certainly sounds nice to
avoid doing the 'big port' all at once.

* Breadth and depth of class library is on par with Java.

* Good documentation.

Cons:
* Winforms is deprecated? I can't find a straight answer on this one,
but it is awfully confusing to hear the yet again the 'next big thing'
from MS is being deprecated. Its confusing to figure out what GUI
toolkit MS is recommending for development today, that has a shelf life
of at least 5 years.

* WPF looks like it has questionable merits. I've seen some demos on
MSDN, I've played with the tools, I've read 1 book, and I'm not sure I
see an advantage to WPF for my work. They appear to be taking the same
course as Swing, custom rendering everything on a base native Canvas
control. This allows for huge flexibilty at the expense of some speed.
With Swing you gain the ability to move across platforms, with WPF you
get locked onto Vista and XPsp2.

* Fool me once, shame on you. Fool me twice shame on me. I'm still a
little aggravated that my VB6 investment is somewhat wasted.

Whew...

At the end of the day, I realize that I *could* get the work done with
any of the above. But, I feel that if I had sought out better advice
when embarking on the initial development during 2001/2002, I never
would have chosen VB6. Therefore, I'm trying to do a better job of
soliciting advice as I head down this same road again (albeit 5 years
later).

If you made it this far along in the message, thank you very much for
your time and attention. Any advice is greatly appreciated.

--
Best regards,
Gareth Conner
.



Relevant Pages

  • Re: Pondering the dev tool landscape from an outsider
    ... purchased a Turbo Delphi Pro license a little while ago. ... to decide my best path for continuing development on an existing VB6 ... Java port leveraging the Netbeans RCP. ...
    (borland.public.delphi.non-technical)
  • Re: COBOL to Java conversion
    ... experience and at least one of them is currently working in Java. ... platform, but also to change the language to be Java. ... I have not personally seen or worked on a Unisys conversion to Unix, ... Changing a technical platform might have many reasons, ...
    (comp.lang.cobol)
  • Re: Strange problem when using a class module in VBScript
    ... > problems and is faster than Windows and VB/VBA. ... > which is essentially their version of Java. ... > The Wintel platform has been a series of compromises to preserve backwards ... Unix boxes are often faster, but it has nothing to do with Java. ...
    (microsoft.public.vb.general.discussion)
  • Re: These are identical, right? char const* and const char*
    ... > Java was originally an embedded systems programming language, ... You gain working directly with the platform API in your code and thus fully ... Windows and these are instantly available to Windows C++ programmers. ...
    (comp.lang.cpp)
  • Re: Strange problem when using a class module in VBScript
    ... >> problems and is faster than Windows and VB/VBA. ... >> Even Microsoft is acknowledging this in developing their .NET platform, ... >> which is essentially their version of Java. ... > Unix boxes are often faster, but it has nothing to do with Java. ...
    (microsoft.public.vb.general.discussion)