Is Java free to use/ deploy and build large web applications? - language-agnostic

Simple question, I want to know is Java free (especially for web development). Later on if I've build a large website, will the servers, databases cost me much like in .net for example?
Cheers.

Java is free. Check licences of frameworks you're using, but you shouldn't worry about that since most of them are free.
Servers (physical) will, of course, cost you.
There are free application servers like Glassfish and JBoss.
There are free databases like mySQL and PostgreSQL.
So, you can get away with everything being free except hardware and, possibly, hosting of your web app.

Yes and no - depending on how big your site gets, you may be required to invest more money into better servers/databases.
It's not really something that can just be answered, without looking into the future.

Update, as of 2021
Be sure to read the document prepared by pillars of the Java community, Java is Still Free. This document provides a short overview as well as a longer section with all the gory details.
Understand that Java is a set of specifications, not a product.
Java Language and Virtual Machine Specifications
JEPs and JSRs
Many vendors provide binaries or installers for an implementation of Java. Nowadays, all of those implementations are based largely or entirely on the OpenJDK project. Participants including Oracle, IBM, SAP, Apple, Azul Systems, and more have banded together to pool their best technologies for implementing Java as open-source free-of-cost.
The OpenJDK project provides only source-code. Various vendors build that source code to provide binaries or installers for you and me to conveniently put Java on our computers. Some of their distributions of Java are available free-of-cost, and some are commercial with paid support. Some are general-purpose JVMs, and some are special-purpose. Some are a basic JDK and some have bundled extras.
Here is a diagram I made to help you in choosing a vendor for a Java implementation.
And some considerations to think about when choosing a vendor.

Related

SAP PI/PO vs open source ESB advantages

Is SAP PI/PO now considered a true ESB? I've read various sources claiming it was not quite there 4-5 years ago.
And what if you have a very SAP-centric environment, would it be very strongly suggested to use PI/PO instead of the more standard integration platforms such as Mule ESB, Jboss Fuse, BizTalk and Oracle ESB?
If you primarily have expertise with the platform agnostic ESB's mentioned, would it still be worth integrating with SAP Pi? What are the advantages of PI?
I see they all have some option to integrate with SAP, but unbiased information seems hard to come by in the SAP-scene.
If your entire landscape consists of SAP modules then probably better to use PI.
If however you want to connect to other systems in the cloud, internally or externally then I would not choose PI.
PI is not an integration platform (better to use this phrase an an ESB). In this case it is better than have something fronting your SAP backend such as Biztalk, Fuse, Mule or other. They are more flexible and have more functionality when it comes to communicating with other systems and protocol. They are probably far easier to use as well.
Most of these integration platforms have commercial adapters that can connect to SAP. IBM's Integration Bus has SAP adapters, so does Fuse and others.
Like I said, it depends on your landscape and your integration requirements.
Today, as SAP NetWeaver 7.5 released, SAP PO is common ESB.
It is based entirely on Java8 and JEE5 standards, with optional old-fashioned ABAP usage.
Someone could implement integration scenarios with many tools (simple mappings, SOJO or EJB, or even your own JCA-adapter). Now SAP PO is really fast and reliable.

GUI Development - Free Tools

We are looking at building a GUI application having the following attributes -
* approx 100 screens
* approx 200 users
* interfaces with 8 different legacy applications (protocols tbd but we are assuming web services will be exposed)
* has a separate data store for storing authentication and authorisation info along with few other information.
We are trying to avoid spending any money on procurement of physical servers, application servers etc.So we thought instead of building a web application , we could develop a standalone GUI based application that could be deployed on users' desktops considering that the users are less and the access to this application is confined to our organisation.
We were thinking of Java Swing as one of the options to consider. Is it a good choice? Please advice on the other options that we need to think about. We thought MS products would involving licensing costs to buy the product hence we are looking at developing the application using some free software tools.
Thanks a lot!
Regards,
V
I really like Swing and have written many applications with it, but I'm not sure the argument that you will get a cheaper solution because you have to procure less physical servers is a good reason for it.
There are other ways to use computational capacity on the client side. For example you could use SmartGWT. With a browser based solution you get easy deployment and have no problems with client-server communications (i.e. no proxy hell). It's possible to get all of this solved with a standalone GUI, but it requires experience and time (== money).
I think a standalone GUI is a good idea if you need a "rich" user experience and tight integration with the native environment. Web apps are generally less snappy and not so well integrated. If it's just about editing data on a server, the standalone GUI does not really have any advantages.
I won't rehash what we talked about in the comments. It seems you are focused on java gui solutions. With that said there are alternatives for developing gui applications with free tools. Just to name a couple, you could develop your client with Adobe Flex or Adobe Air, use python, php or ruby and GTK, or develop a windows GUI app using c# if your target os is windows. Similar to Air, Microsoft Silverlight is an option. Java is not the only solution.
Many Java gui apps are written using swing. The major competitor to Swing has long been SWT which is used for eclipse and by IBM. Javafx is a newer/alternative platform Sun/Oracle is behind, you should also look at. To be complete, you should also take a look at qt jambi that lets you develop in java against the Qt framework.

Best portable development platform for small personal project

I'm looking for a development platform (language and set of libraries) that will allow me to develop a personal project. (In case anyone is curious, I'm looking at making a music library manager, similar to iTunes, that can work on multiple platforms and sync with Android devices).
I want the language to have the following characteristics:
Essential
The program must run flawlessly, with no (or very little) code changes on Mac, Linux, and Windows. That means, notably, that I need to have a cross-platform GUI framework, a consistent API for accessing files and directories, and a consistent interface for talking to USB storage devices
Important
A language that is easy to use, powerful, and expressive. Big standard libraries with a lot of built-in functionality. (I'd probably use C#/.NET but the portability isn't great)
Nice to have
Good tool support (on Linux if possible, but I'll do my development on Windows if needs be)
Not Java. (I have used it and just don't like it - I'm not interested in getting into a language war here).
Please help me choose a language!
Python
Cross platform GUI: more than one option, I'd use WxPython, but Qt bindings are also available (comparison between wxWidgets and Qt).
File System API: this gets into the os package, but there are also convenience methods for just dealing with I/O.
USB I/O: I confess to not having any knowledge here, but suspect if you're talking storage that Python will be able to read and write using its IO package.
Libraries, Ease of Use, etc..: there's a lot built in, but also a huge number of add-ons (called "packages"). Some of the most notable are SciPy and NumPy, used for scientific and numerical analysis.
Tooling: there are a number of IDEs out there, I use PyDev (but it's Eclipse based so you probably won't like it if you don't like Java).
Finally, Python is supported on Android via its scripting environment.
For cross platform GUI, you can explore QT. The back-end can be on c.
Have you explored anything so far?
Qt quick ?

Can i use mySQL in my commercial windows project

Can I use mySQL in my commercial windows project? Are there any license issues? Which version should I use?
Surprisingly, since the server is not linked with your application directly, you can distribute the MySQL Community server unmodified or modified, as long as you follow the GPL terms. (in short, if you modify the server, you need to make the modified source available)
The client library is another story, however. If you are distributing your commercial project, you cannot distribute the MySQL client libraries freely along with your software if your software is not GPL-licensed or another OSI-approved open-source license.
This is called the MySQL FOSS license exemption, more can be found out about it here:
http://www.mysql.com/about/legal/licensing/foss-exception/
http://www.mysql.com/about/legal/licensing/index.html
You will either need to purchase a license to distribute the mysql client libraries, use another client library (highly unlikely to happen, as there aren't many good libraries that don't wrap the official one) or make your software open-source.
(I am not exactly sure on the legality, but it might be possible to have your customers download the mysql client libraries themselves, but I think it will still constitute 'linking' against a closed source app, therefore still violating the terms. In either case, this is definitely an added hassle for a commercial app.)
It might not be an option for you, but it's worth noting that PostgreSQL is licensed under the BSD license, and sqlite3 is in public domain. Both are a bit more friendly towards linking with commercial code.
As per their explanation, you can use it for free but you will be obligated to release your commercial windows project under the GPL. To keep your code proprietary, you need a commercial license.
Have you every try to search the official site of MySQL for license information?
-- (update) --
OK, since you are "not confirm", let me summarize in short:
"If you want to use MySQL in your commercial program, you must either make your program GPL (i.e., open source, which apparantly not your choice) or Pay Them For a Commercial License".

What repository products are available for keeping track of web services?

My organization is starting to take SOA seriously but before we jump in one of the components we seem to be missing is a rock solid repository for tracking these services across the enterprise. Can anyone suggest a product that they have worked with? If the product is also an ESB please mention that in your answer.
You might like to take a look at IBM's WebSphere Service Registry and Repository. It does what you describe (with governance abilities as well), and integrates nicely with IBM's ESB products (although it not one itself).
Please feel free to get in touch if you want to ask any questions.
Disclaimer: I work for IBM as a WebSphere Consultant. However, I am not speaking for them in an official capacity.
UDDI functionality ships with Windows Server if all you need is a registry.
I also have worked for IBM and I would stay away from WSRR - it is buggy, immature, expensive and overly complex. I would not recommend it.