Deciding whether to use Java
Q
"I have an issue and wanted your opinion.
I have my own ideas on the situation but wanted an experts opinion.
We have NO Java developers in house, however MANAGEMENT wants to develop a Java front-end product.
It would be a very functionally intensive product; lets just say it might be a rewrite of an existing desktop product which is extremly functional and in-depth in information given to the user.
We have a bunch of developers(8) who have Visual Fox Pro experience, one with VB OCX experience and 3 with HTML and Javascript experience.
Now, we plan on bringing in possibly 1-3 Java Developers (Contractors) to help with this development (That was thrown around today).
My question is what happens once they leave, who is here to support the product if none of our developers have JAVA?
Also, how much training would they need to go through to be "somewhat" experts?
This is asking a lot I think.
We also want the product to support BOTH SQL 7.0 and ORACLE.
Again, probably doubling our work.
The decision was made for us to have this product FINISHED in 6 months.
Now in my opinion with no developers in house who have JAVA experience (regardless of bringing in 3 JAVA developers) with the product having to support both ORACLE and SQL 7 (and at this point without an IDEA of what the product will look like, we have no prototype as of yet) there is no way it can be developed and implemented in 6 months.
However, if we wrote the front end in Visual Basic OCX with our developers in house having Visual Fox Pro experience, we could possibly have it finished in 6 months.
What do you think?
Once last question: have you ever implemented HTTPS URLCONNECTION?
Or have you heard of anyone doing such a thing?
A
Wow.
Quite a set of questions but I think ones that plenty of other people have asked.
Let me do my best to give you my "opinion".
First of all, Java, like any other language, technology, interface, or e-web-cyber-thingymajigy is just a single tool in a larger toolbox.
The likelihood that your product will become successful just because it was written in Java (or webified at all) is about equal to that of learning to manipulate complex algorithms by putting a copy of Knuth Part One under your pillow every night.
One does not correlate to the other.
Java in itself is not a silver bullet.
And, in fact, it may very well be that Java is about the worst thing you could possibly do for your project.
One company I worked for in Silicon Valley (well, they bought out the company I was in) actually tanked because they inappropriately tried to port their product to Java (sounds like maybe what you are facing now).
Now don't get me wrong.
I happen to love programming in Java and I think that it is a darn fine language to program in for all sorts of situations.
But I would never use it to say... rewrite Word Perfect...ehem....
You need to be very careful about all major architectural decisions in a software product and be calm and reasonable with your managers who may not fully comprehend the technical issues while realizing that you may not comprehend all the business issues!
The technically correct decision is often a decision that could kill a company, so give your marketing/management teammates some attention...even if they are pointy-haired imbeciles. :)
Here are some features I think about when choosing which technology to use for a project.
1. How large is the application?
Web-based technologies are not so good for large apps.
Java, as a web-centric technology is, as a result, not particularly good at mammoth applications.
It is better suited to thin, limited, light projects that pack a big punch.
The "web" is the application.
Your Java applet is just a feature of the application.
If you start to think of your applet as being "the" application, you will design a cruddy website that is slow and cannot be navigated because it does not meet the requirements of the medium.
2. Is speed a requirement?
Java is also pretty slow compared to a platform-dependent/compiled language like VC++.
But of course, on the web, the speed of Java relative to the network, is not so bad.
However, if your application will not be web-based, users might notice a slow down.
3. Does your application need to be cross-platform?
Java is of course cross-platform (well pretty much) but if you don't need to worry about cross platform functionality....well then....who cares.
If your app is not a web app then why are you talking Java?
I would note however, that even if you are sure you will always only need to support a single platform like Windows, Java can be better because it is easier to put a Java application into production than a VB one because Java requires no .DLLs.
Most of the VB projects that I have watched take 4 months to develop and 6 months to put into production because every client machine ends up being incompatible with DLLs and registry settings.
This of course, is a non-issue with Java.
4. Is Java your core competency?
You have raised a very good point about contractors.
Contractors come and go and often leave nothing behind but an almost working app.
It is only the particularly moral and excellent contractor that leaves good documentation and designs an architecture that is easily maintainable and extendable.
Of course, on the other hand, Java was written with enough syntactical sugar to enforce a good deal of good OO design.
Even crappy programmers tend to write decent Java code.
Experienced java developers generally put out fairly maintainable code....at least that has been my experience.
Regardless, if Java gurus were to come in, then it should be mandatory that part of their job would be to train the existing staff up so that they could carry on.
My recommendation would be that if your company puts in concurrent training energy, you will be able to take off from where the contractors leave.
Java is actually fairly simple to learn, especially for an experienced developer.
I think it is reasonable for you to come up to speed in 3 months, especially if you can have 4 hours a day for it.
5. Is speed to market an issue?
Java development is fast.
Java development is damn fast.
I rarely see a well-concieved java project take longer than 3 months from design to UAT.
I am now finishing a 100% java-based FX trading system that sends real time prices "out to the web" at 200 ticks per second (faster than some C++ apps on trader desktops), takes in trades at 186 trades per second to a pool of java servers hooked up to web servers running servlets, sends those trades off to backend settlement systems where they are sent off to the actual banks, and delivers client trade portfolios/status out again at the same rate.
All this using XML, client-specific authentication/preferences/spread ladders, encryption and all the goodies which are all dog slow.
And all in 1.5 months to build.
Oh, there are 2.5 members of the development team.
Let me reiterate. Java development is fast.
6. Is the architecture Java compatible?
In my current project, we had the luxury of designing the app from the ground up.
As a result, I could architect it in such a way that was consistent with the vibe of Java.
If you have an existing architecture... say one that places a great deal of business logic in the client, then you are going to spend double the amount of time stripping apart the old application before you can even begin on the new.
This is actually a fairly big concern of mine when I read your mail.
Your existing architecture could easily be completely non-Java friendly and any contractor no matter how good they are can become mired down in it.
7. How fancy does your application need to be?
If you are developing applets, you should probably be using JDK1.02 for backwards compatibility.
But if you do so, you are going to feel pretty trapped in terms of the GUI functionality offered by Java.
If you are developing applications, you can afford to use the SWING library, but even then, GUI in Java does not have ALL the bells and whistles of VB or VC++.
8. How large is the development team?
Java is a very robust OO language and as a result it is pretty easy for a team to work on projects.
Objects can be divided up amongst team members and concurrent development can occur with ease... provided you have a good architect at the helm.
My experience with VB is that it is not as nice of a OO design and as a result, it is harder to divide up projects into objects.
IN CONCLUSION: I won't give you a recommendation because I know it would come back to haunt me :)
But, I don't think that either decision is bad... it sounds to me as if you could pull it off either way.
I think it is time to look at the business decision.
Why are you even considering Java?
Do you want to deliver the app over the web?
If so, why are you considering VB?
If not, why are you considering Java?
Or are you really talking a true Java Application?
Regarding Database connectivity.
No problem, JDBC works just fine and takes a couple days to implement.
JDBC is just like ODBC... no problem, you'll pick it up in a flash.
HTTPS is a pain in the butt for native Java.
BUT, never fear, you can always use the Extropia JavaToCGI Bridge for HTTPS communication by pointing your web browser at my website: http://www.extropia.com/products.html
All our products are open source and free.
You can buy a license if you want...but no pressure. :)
Selena Sol contributes to the JavaBoutique's Introduction to Java. Selena curently works for Barclays Capital in London, one of the leading global investment banks in Europe and has worked as a software developer for the National Center for Human Genome research, Microline Software, Neuron Data, and Electric Eye in Singapore. Selena is perhaps best-known for creating the Public Domain Web Script Archive (Extropia) and writing several books on Web Programming (Perl, CGI, Java).
Email: selena@extropia.com
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|