What platform would you recommend to develop a SAAS application? [closed] - java

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
Should I use LAMP, .Net, or any other platform? I have access to resources with LAMP, .Net, ROR and Java experience. Thanks.
Sorry for being vague. Could you give me a few pluses and minuses of each like Paul? Thanks for your time and effort.

If you're planning to host the system, then you are best to work in a language that you are comfortable with and can hire people to help you. That means you want something reasonably popular, but also oriented towards the type of functionality you are implementing. Presumably you are writing some form of web application.
Personally, my favorite web app language was Perl, but it took a huge amount of self-discipline to keep from making it a mess. It's probably not great for big teams, and it's hard to hire people with experience.
PHP is great for pounding out web apps, and it has a big following. Unless I haven't been keeping up on it LAMP, .Net, ROR and PHP are all bounded by web 1.0 technologies, which means augmenting them with a JavaScript library like Dojo if you want to use AJAX (which is all the rage these days).
If the software is enterprise, then Java or C# are more sellable, but since you're running it yourself that doesn't matter. Personally I'd stay far away from J2EE, it's just too much complexity for too little functionality.
My latest combo is Java, GWT and hibernate, but I find they are very difficult technologies to master. Good if you have the time for long term development, but not so great if you're in a hurry.
So, if you're in a rush, prototyping in LAMP, with a very simple 1.0 front-end is probably best, then later once you've crystallized the concept, redoing the system in some stronger technology will help you get to the next level of performance.
Paul.

If its a professional project then use whatever you have the best resources for, if you don't know then ask your coworkers what they would be most comfortable with. If things really are equal (and I doubt they are) then use each of the platforms to write a random platform selector, and use that to make your choice.
Conversly if its a personal project and you are looking for something new, then use the thing that you know least about.

Waaaay too subjective/argumentative.
They all have gains and losses and are all adept at SAAS type architectures these days. Use whichever you're most or least comfortable with depending on your goals.

Try to see which platform has purpose built solutions. I know in .NET there is Apprenda's SaaSGrid and in Java, BEA was working on something called Genesis, but I think it was cancelled when Oracle bought them.

My answer is the same as Paul's.
Know who your users are and if they have software requirements, such as Microsoft licenses etc. It's much easier to bind Microsoft applications with .net than any other language.
Know your budget if you have one. PHP will be the cheapest and fastest to build a web app in. All you need is apache, roughly 10 lines of site configuration, and about 50 lines of code for a SAAS app.
Is it a once-off develop and forget? Most applications won't be, so you'll need to develop it in a language that's accessible and well supported. No point developing in Ruby or Perl if you need high availability, accessibility and support.
Keep in mind that you can develop enterprise-level applications in PHP, Java and .NET. One of the reasons why people develop in .NET and Java for enterprise level applications is for the available support, stricter languages, typically better developers etc. It's a myth that PHP is no good for enterprise - each platform is only as strong as its weakest component.
Are you using an Oracle or Microsoft database? While PHP can connect to those systems, they require additional drivers to do so.
First of all, figure out what you're trying to build. Prototype it in a language that you won't develop the final solution in (unless that language is your strongest and most competent language) so that you simply can't continue using the prototype as the final solution. Transfer the business logic, framework scaffolding and library ideas to your chosen language.
I've developed SaaS apps in PHP before, and from my experience there's hundreds of ways to skin the same cat so to speak
Pros:
Cheap development
Rapid development
Low server costs
Low initial maintenance costs
Cons:
Semi-competent developers who are most likely unfamiliar with OOP & SAAS concepts (this is almost always a given)
Expensive maintenance down the track, especially point 1
Performance overhead without effective caching strategies
Every developer who touches the application will want to develop it into their own system
Not a strongly typed language, so type hints are very important as well as constantly validating input for type and correctness (word?)
Hope that helps...

You could use a free web RAD called 4WS.Platform:
www.4wsplatform.org
which is free.
You could deploy it in Google App Engine and use it to create web applications on the cloud, which are a Saas solution...

Related

Java as back-end platform. Good choice? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
My company is about to start building the back-end for one of our new products. The idea is to build a layer that produces resources for every upper layer product (web site, mobile web site, mobile application), also, a significant part of it will be made available as an API for third party developers. You know, the typical start-up scenario.
We were planning on building our backend using Java Servlet Technology so our architecture was going to be dependant on Java, so the question is: What are the implications of Oracle scaring away open-source-aware developers and companies like mine?
Should I try to find an alternative to Java? Are you trying to move away from Java?
This question is not about technical issues with Java platform, but with legal implications of Oracle draconian intentions (my subjective point of view).
EDIT: Of course this question is subjective and argumentative, that's the kind of answer I want: opinions, and opinions are subjective and argumentative.
I suspect that Java will remain a strong back=end platform for a long time. Oracle, among other things, doesn't want to kill the golden goose. In addition, there are too many good back-end components based on Java, from Tomcat to messaging, to hibernate and spring, to groovy and grails; the market won't let them disappear for a long time.
Technically, Java is well suited for complicated back ends and large-scale problems; if you're building something simple and lightweight, using a framework like Rails along with an open-source database is often plenty.
Groovy and grails are a nice bridge from the lightweight approach of Rails to the full Java world, although groovy can be a little, um, peculiar sometimes.
We were planning on building our
backend using Java Servlet Technology
so our architecture was going to be
dependant on Java, so the question is:
What are the implications of Oracle scaring away open-source-aware
developers and companies like mine?
Are they? Last time I checked JBoss and Spring were going strong. Scala is being considered as a strong alternative for replacing Java (or it will shape the next best language for app/system development on the JVM.)
What exactly are you referring to here? I don't follow. Now, if you are going in direct competition to Oracle and their stack (and all their integrated solutions, like Oracle Financials), then maybe you might have something to worry about.
Or if you are (or intend on) doing something that violate (or can be interpreted as a violation in a court of law) the Java license agreements, then you might have to worry about Oracle (because it has the teeth to pursue them, which Sun did have.)
So, you need to be a bit more pragmatic and objective and define clearly what exactly your product role will be with respect to Oracle products. Based on that, you have then to decide whether investing on the JVM is a good decision or not.
Should I try to find an alternative to
Java?
Depends on what you are trying to achieve. A question like that is too broad and open ended to be answered in a meaningful manner.
Are you trying to move away from Java?
From the point of view of curiosity and diversifying my skills, yes. But were I in charge of developing a back-end product, I'd use the JVM. I might try to use Java and leverage from the 15 years of collective knowledge on the platform. Or I'd try Scala. But I would stick to the JVM.
Oracle or no Oracle, for these type of things, the JVM is the superior choice in terms of stability, scalability and wealth of knowledge. Erlang VM might be better from a technical point of view, but you would be hard press to build a talented team compared to building a similar one for the JVM.
Found an article discussing the future of Java, dated 05.03.10.
Okay, conclusion from the same link,
While the wheeling and dealing of the
corporate world rarely affect
developer communities as a whole, the
Oracle acquisition of Sun will have
far-reaching affects for years to
come. And while the profitability of
individual Oracle products may not
concern you, as a developer, the most
interesting points remain to be the:
- Combination of HotSpot and JRockit into an uber-JVM
- Unification of the Java SE and Java ME APIs
- Increased investment in JavaFX onto more platforms
- Continued integration of dynamic languages into the JVM.
I would recommend Java as a back end platform, I am currently employed with a company that specializes in software business solutions for companies, and nearly all of our work is revolved around using Java in the back end.
I am not sure if your back end is going to be web driven or not. I would say take a look at using the Spring Framework with Hibernate Database support. Spring has excellent support for using Hibernate and so many other tools and thats why I am a supporter of it. Unlike some other frameworks that limit you to using only certain tools, Spring does a great job of allowing you to integrate many different libraries, tools and frameworks with it. This is good because as we know too well, technology is always changing and something that is popular now, may need to be changed in the future.
Java as a back end solution will require a little more work in the beginning as oppose to lightweight approaches like Rails, but once you get everything setup(database,build files,etc) then it is off to the races.
If you end up taking the Java route, look into using Maven for building. Ant is also good, just a little more work to setup.
... did you rule out any particular technologies and for what reasons? Is .Net an option?

Is there anything RAD comparable to VCL? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
After years in embedded programming, I have to develop a Windows app. I dug out my old C++ Builder and Delphi. These are great and the latest version costs over $1k, so I won't be going there.
What I particularly like is the VCL (visual component library) which let's me code my own components and share them with others, plus the thousands of existing 3rd party components. I noticed that there is now also a RAD PHP from Borland too.
I realize that MSVC, QT, NetBeans, etc are good enough IDEs for RAD, BUT does anything offer the ease of the Borland products for developing additional components - and does anything else have thousands to choose from?
PC based? Cross-platform is good. Browser based? Free is always good ;-)
I don't particularly care about the programming language.
I went with Lazarus and am pretty happy with it. I can't just recompile my code and expect it to run, but it covers 90% of my existing Delphi code. I'd recommend giving it a whirl before spending $1k for Delphi
Try Lazarus, Lazarus is a cross platform visual IDE for Pascal and Object Pascal developers. It is developed for and supported by the Free Pascal compiler. is available for several Linux distributions, FreeBSD, Microsoft Windows (win32/64/CE) and Mac OS X (including IPhone/IPad). The language syntax has excellent compatibility with Delphi (classes, rtti, exceptions, ansistrings, widestrings, interfaces).
for additional info check theses links
free pascal
Components and Code examples
Lazarus Components
SHORT
.net, it's the closest you will get
If you want develop desktop apps, Delphi is a clear winner: Single executable, no runtimes, few dependencies in the case you have to deploy an app with database access, native code
As already said, Lazarus + FreePascal makes for the "free Delphi" role. I personally didn't have a good experience with it - but I heard that got better since I last tried it.
(I'm talking of lazarus IDE, since FreePascal seems to be a very stable compiler and used by very serious Delphi projects for various purposes - like creating Win64 binaries, for example)
.NET, on the other side, offers some free solutions:
On the multiplatform side, Mono + MonoDevelop
On MS stack, the Visual Studio Express IDE.
All the choices allow you to visually create hierarchies of forms and change it in design time. Visual Form Inheritance, VFI for short, can save you a lot of time if done well.
Web things, the major players are Java (JSP and the like) and .NET (ASP.NET). Having done some webservice development in dotNet(1.1), I loved it for the simplicity. Seems Java boys have a lot more work to make things work (that was said from a Java enthusiast friend of mine) with SOAP Webservices.
The Visual Studio Express Editions are pretty good if you don't want to spend any money on an IDE. I started programming in C++ Builder and also liked the VCL a lot. I dabbled in Java a bit but found C# to be much closer to the C++ Builder/VCL experience.
http://www.microsoft.com/express/
You can always try these out and if you really like the environment the upgrades aren't too expensive to the full versions. I think the only major feature missing from express editions are plugins.
For the Java platform, Apache Click is a web based solution.
Highlights:
Very easy to learn
Component and Page Oriented design
Event base programming model
Stateless and stateful page support
Exceptional performance
Automatic form rendering and client/server side validation
Supports Velocity, JSP or FreeMarker page rendering
Supports Java 1.5 and up
Click examples are available online at http://www.avoka.com/click-examples/home.htm.
There are a number of extension projects that provides extra features and components.
Click applications can also run "in the cloud" on Google App Engine. This means you can develop and test them on a local app engine server and then deploy them to GAE which is free within the basic quota (up to several millions of requests per month).
Eclipse is also a great IDE, and there's a good number of libraries which can integrate into it, so Eclipse + free 3rd party components >= VCL.
If you are interested in PHP, the next version 6.9 of the NetBeans IDE will include support for the Zend Framework. Milestone 1 of NetBeans 6.9 is already available here (24 MB size).
A blog entry with screenshots can be found here: Zend Framework support.
There are quite a few options available. You can download the express versions of Visual Studio for free and they are quite good. Not as many features as the full paid versions but very close (however the C++ version DOES NOT support MFC/ATL only C++/Win32). This gives you great exposure to the .net framework if you wish to learn it.
I haven't used the free Delphi tools so I can't say what they're like.
You could also give Qt or WxWidgets a try as well. Both are great products but I think Qt is more mature and has a better component library. However both of them come with runtime components that have to be distributed with your app.

When is Java the right choice for Web-based applications [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've been doing some research into taking my programming experience and moving into the java programming marketplace, due to a combination of personal interest and local market forces. As you can gather from the title, the vast majority of my experience has been in building web-based sites and applications, and I'd like to move as much of my previous experience as possible.
One thing that I've been unable to find a concrete answer for when should a website or web-based application designer look to going with a Java based solution, over other options currently on the market. What options would Java provide that would have a designer select Java as the basic coding language to base a project upon?
Thank you for any constructive replies that may arrive from this inquiry.
EDIT: I should have included the caveat of if other factors are equal, for example if hardware, software, developer skill in java is up to where they should be for such projects, and so forth.
The main factor is what your developers are adept in. If you've got a bunch of Java developers, go with Java.
Consider this also: Java tends to run on app servers where there is a persistent global program running, and separate threads/processes spawn off to service individual requests. However, if the main global VM croaks for some reason, your whole app can go down. The benefit of course is that you get application/system level resources that you can initialize and use continuously across all requests
Other environments like PHP basically tear down and rebuild the entire environment for each request. You can code in application level data persistence using a database, but you don't get it for free. On the other hand, if one php process croaks while processing app data, it won't kill the whole system , as the entire environment is just torn down/rebuilt for the next request.
Agreed with many of the previous posters, but one possible consideration is runtime speed.
If you are using a very basic LAMP stack server, running PHP4 or lower, Python or Perl, if you do not set pre-compilation, all of your scripts will have to be re-compiled at runtime. This can cause immense stress on the server for high intensity applications. If you're in the situation where you cannot enable pre-compiling for LAMP, but you can for Java (most Java servers require this), then this should be of concern. The disadvantage is that you may have to re-compile large chunks of your web application every time you edit it. I realize this is becoming less and less of an issue nowadays, but its something to check.
Be sure to include a learning curve in the development time if developers aren't familiar with the chosen language.
For the most part, the best technology is the one you are already using.
If you have coders that know java, have system administrators that can configure java apps and know what to do when a java app stops working, and project managers who know how to accurately schedule and plan a java deployment, you would need a very, very compelling reason to pick something else like .NET for a new project, even if .NET is "better" (whatever that means).
There are, of course, exceptions; if you're using something obsolete and/or is not going to be supported in the future (like classic ASP), or you have no legacy systems, then it's time to use something new.
I believe that the conventional wisdom on this subject is that Java is better suited to very large systems that need the discipline of static typing. Also, on very busy sites, Java can use less memory and run faster than most interpreters.
(Right out of the box, Java wants lots of memory. But on a busy system Java has only one copy of all running code.)
There are also certain prosaic reasons to stick with Java, for specific sites. They might need back-office integration or some other big piece of existing code.
I would use Java if there was a library or framework that provided specific features that no other language did (or not as well).
For example, if I had an in-house-built java library for running our Gruntmaster rock crusher, then it naturally would make sense to use Java to build an app that needed to control the Gruntmaster.
Some might say that whatever one's shop's official language is the language one should use--I disagree with that rule, as in my experience a good developer can learn any language.
There is no hard and fast rule otherwise; each language has its own strengths and weaknesses. The fact that you are asking this question about Java tells me that you are not as familiar with it.
I'd suggest you go ahead and build an app or three in Java -- then you'll know. :)
There is very little separation between the capabilities of the various technologies available today for web programming.
Java at one time was the default choice since it far surpassed the abilities of the competing technologies, but that is no longer true.
The Microsoft answer has matured rapidly; the days of classic ASP are far gone with .Net now providing all the abilities and ease of programming that Java has offered.
New languages such as PHP and Ruby have arrived or become much more mainstream, and are also valid choices based on your programming needs.
So as many others are saying it boils down to what language you or your developers are familiar with.
Another aspect to consider, is the ability to use a vast eco-system of open source libraries.
Languages like PHP, Perl or Ruby have such lib market places (almost) built in. .Net is rather closed in that sense. Java on the other hand has a a very large, enterprise grade eco-system of libraries to choose from and communities to learn from as well.
Practically I agree with the guys about leveraging existing human infrastructure.
Technologically, Java is quite good for non-standard web things - like heavy use of AJAX (GWT, DWR, Comet spring to mind), Mobile (where you generally need lots of session data and less front-end bling), really simple things that are going to be put under immense load (it will definitely trounce Apache mod_XXX every time, the only thing faster in wide-spread use is native code).

How to transition from OO development to Web-Development? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 months ago.
Improve this question
I just graduated last year and I landed a job in the CRM space, specifically with Salesforce.com and its respective platform. My problem is that there are 2 languages used to do things on this platform one is relatively similar to java and is OO the other is a web-development language similar to js, but not quite. I come from a java background.
I have had limited practice with web development in the past and was always interested in it but found it difficult.
Now that I have been thrust into this world I'm finding it hard to complete tasks simply because things do not function the way I am used to in the OO world. I'd write code that would compile, test and get aggravated when things simply do not function as expected!
What do you guys suggest would be best for me to read and comprehend in order to transition my OO thinking into web-development thinking.... I'm thinking I should learn things such as 'states, MVC etc etc.' but just don't know where to begin...
Thanks for all the help!
If you mean Object Oriented with the shortcut OO I have to disagree, because most web development languages are in fact object oriented (and you really shouldn't switch from a object oriented to a procedural server sided programming language). So what you of course need is understanding of your server sided language, be it PHP, Java, Ruby or whatever and that all of them in the end just generate some form of String output (which usually HTML). So you should be aware of all the technologies and how they interact (e.g. HTML, CSS, JavaScript/AJAX, your server sided language framework and so on) and have a understanding of how the transport protocol (meaning mainly HTTP) works and what the disadvantages/advantages are.
If you already did more OO development you should at least have heard about MVC which is (with some adaptions to HTTP being a stateless protocol) probably one of the more important patterns to transfer into and use in the web dev world.
It sounds like you are having trouble getting started with Apex and Visualforce, the two technologies used for development on the Force.com platform.
I'd recommend reading through the developer.force.com site. In particular check out the tutorials.
As far as object oriented development with Apex goes, start by reading Object Oriented Apex - Practical Usage.
It might also be worthwhile to cruise through the message boards and see what questions other people are asking. The community is pretty active. If you have specific questions, you can ask them or stackoverflow.
In my experience, working on web projects instantly reduces my productivity by 50%. It takes me twice as long to get something working in a web project compared with a compiled executable program.
You're working in mutliple languages that interact in ways that you need to control in a very specific way. Your mindset changes depending on if you're writing code for the client-side, or server-side. (Some of this goes away if you're doing Google's Web Toolkit coding).
I won't even go into the added difficulties of debugging web based products when compared with debugging a typical executable.
Most of the langauges do support some form of Object Orientation, and when they don't, typically developers will separate functionality into different files based on Object Oriented techniques. I think you'll find that knowledge will still apply.
Web development fully embraces OO if used with frameworks like .NET and JSF.
You need to start thinking in terms of web application logic and behavior. The OO concepts are there to help you and be your tools.
If you mean client side languages like Javascript/action scripts. Try Dojo framework for javascript development, it has a great model using an OO approach.

Why is Java frequently used for enterprise applications? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
As a Java newbie I'm wondering: of all the languages in the world, why is Java frequently used for enterprise applications? What makes it that way compared to the other languages? Will it continue to be this way in the upcoming years?
I'd appreciate your insights. Thanks in advance :)
One word: libraries. Java has an vast array of excellent libraries for solving most of the common problems one needs to solve when developing enterprise applications. In many cases, there is more than one good choice for addressing a particular need, and oftentimes those libraries are free and open source under a business-friendly license.
Some have argued that there are, in fact, too many choices in the Java ecosystem, and that developing enterprise software in Java requires developers to make a large number of decisions that can have far-reaching impact on the end product for better or worse. This has probably helped propel the popularity of alternatives like .NET, which has a reputation of offering fewer choices, but with the benefits of a more well-integrated application stack and tools set. What direction you choose depends, I guess, on whether you place more value on "freedom of choice" or "freedom from choice".
There are lots of reasons a large company (the type to go for enterprise solutions) would pick Java. Note I'm not saying all these reasons are correct or valid. But the relevant point is that they appear valid to a CTO at MegaCorp.
Learning Curve
Java is a simple language without much of the flexibility of other members of the C family, this cuts both ways, but it is seen as a straightforward language for use by an army of programmers. Enterprise projects tend to involve large numbers of developers (rightly or wrongly) and it is much easier to get a developer to a minimum level of competence in Java than C++. You also have a whole generation of graduates who have probably been largely schooled in Java.
Choice
Java has a vast array of libraries, frameworks, tools and IDEs, and server providers. To an enterprise its good to have choice, even if that's just for use as a bargaining chip when negotiating price. The language lends itself to code quality tools that allow enforcement of corporate standards (and as mentioned there are a lot of those tools).
Platform Independence
Java is write once, run (well, debug) everywhere. Sun has actively encouraged open standards that allow multiple vendors to implement their solutions. These standards give the customer the comfort that they can migrate from one vendor to another if a given vendor goes under or starts charging more. Of course the reality is that each vendor does their best to provide some "added value" features that tie the customer to them quite nicely.
Maturity
Its been around a long time, running a lot of servers. If your web application needs to be "6 sigma" or similar and you are the MegaCorp CTO, you are not going to look that kindly on Joe the developer wanting to do it in RoR.
Timing/Marketing
Java came out when programming was moving towards the web. It was positioned cleverly and got a strong position early in web development. Because of the open standards, there are some very big companies producing these platforms and they market Java pretty hard to sell those platforms.
Inertia
Large corporations move forward at a glacial pace (a lot are still using Java 1.4 five years after 5 was released), so once they've picked Java, it takes a massive investment to move to another platform. With each day that goes by they're cranking out more Java that would need to be migrated. Most of these companies are not primarily coding shops, so it is a very hard sell to convince the business to spend a few tens of millions rewriting their entire code base for no immediate business benefit.
Another reason might be the care Sun has taken to keep Java backwards compatible. The vast majority of Java code can be run on the latest version of the JVM without a problem. That is quite an achievement, given the age of Java. On the other hand you might argue Java has not changed all that much in all these years.
Enterprises like stability in a platform.
Sun targeted Java to speak to the needs of enterprises early on. It pushes standards that promote vendor independance at every level. Platform independant, database independant, application server independant, etc.
In addition they promoted enterprise level tools for it, in terms of messaging, transaction management and other things that the enterpise worries about.
Before Java, enterprise level stuff tended to be done in C++ (there were plenty of exceptions (does anyone remember PowerBuilder?) but that was the rule) and Java fits well as a successor to C++ for business applications, where that kind of memory management isn't something worth paying for.
In addition to all of that the language itself speaks to enterprises in terms of avoiding hard-to-get-right constructs that can really mess up a code base, such as operator overloading. Enterprise level applications tend to get handled by many different hands, not all of which are the top of the line programmers, and having safty nets to prevent shooting themselves in the foot is a desirable thing.
It also came along at the right time. A new paradigm (this was well before .NET existed) that promissed to combine multiple vendors into an ability to compete with Microsoft, which got the likes of IBM and Oracle on board, that happened to fill a new hole, which was the emerging requirement to develop web applications, where C++ was no longer an obvious choice.
I shouldn't be saying this, but...
The real reason is because it's named after coffee!
Business is about time, money and opportunity.
Using Java means that your number of errors in the code goes down, simply because pointers are hard. You use a GC and you instantly remove an entire class of errors from your code.
Secondly, Java was one of the first languages to ship with a pre written library of functions, which really did cover a lot of the development phase. This restricted the way things were done but it meant that people could learn faster, had more tools at their disposal and had a great set of libraries to do things like network, GUI, web, encryption etc. Java on its own as a language really wasn't that special, but Java plus the Java API was.
So if you've got a language that has less errors and more infrastructure for free, then you end up with more code in less time. Sure the code doesn't cure cancer, it's not as fast as C++ code to achieve the same task, but it will achieve the business' goal of getting an application.
If you make more code, for less money, you can pursue more opportunities. You then bring inertia to the table in terms of code that's already been implemented in Java and you start seeing why the business doesn't want to move away from their comfort zone.
Personally I believe one major reason is the cross-platform issue.
Java programs written "correctly" (without assumptions of the underlying operating system) can run on any JVM. This means that you are not tied to a particular platform, unlike .NET which marries you to Windows.
I have seen Java code run on mainframes, Linux routers, inside Oracle database, and naturally on PC's.
It's cheap, RAD, cross-platform, and developers abound.
Developing in C++ is too slow and expensive and .NET has not been around for long enough. Business inertia is huge, remember.
Businesses want languages that are backed by a professional provider (ie. a company like Sun) and often stay away from Open Source languages for the simple reason that it was not written by a company.
Also for client-server applications, you have an abundance of choices for production-quality app servers that have the same J2EE interface (IBM WebSphere, BEA Weblogic, JBoss). Alternatively, you could use the Spring Framework on any server like Apache Tomcat the complies to the Servlet API if you're convinced you don't need EJBs. In contrast to .NET, it's hard to find choices with respect to app servers.
There are an abundance of choices with regards to frameworks for a given task be it an ORM tool, logging, collections, caching, web UIs, etc. There is no hardly any need to reinvent the wheel.
Finally, while it's fashionable these days to lament the very real shortcomings of Java the language, it's a language where folks know how to get things done and how to avoid certain anti-patterns.
The other answers are all good. Two things need to be added, corporate standards and the bandwagon effect. If you want to build an enterprise system you need to have pretty strong case for not using your company's entrenched standards and this is mostly JavaEE. And if you need to resource a project it is a lot easier to recruit a Java programmer than it is, say, Erlang.

Categories

Resources