Before selecting learning algorithm you have to answer several questions (actual program and library names follow the long introduction) :
- How well do you need to understand the resulting model?
- How different do you expect the testing (unknown) cases to be from the training set?
The first question is very important in the cases that you need to provide a mechanism or causality explanation of the results (i.e. the more educated a person is, the bigger is its income). In these questions you may stick to simple models such as logistic regression or pruned decision trees. If all you need is accurate predictions, then you may try more "black box-ish" methods such as neural networks, random forests etc. Do note though that in these cases you gain flexibility but loose the ability to debug and troubleshoot your models.
Which brings us to a second question: how different do you expect the testing cases to be from the training set? If the answer is "pretty much" or "I don't know", then you have to limit yourself to less flexible models, as your chances to overfit your model raise exponentially with the flexibility (number of parameters and descriptors/predictors) in your model.
You also need to formulate how you compare classifier performance. This hangout provides a nice background on this issue.
Another pivotal issue is the nature of the data. Bayesian classifiers, for example, are most suitable for discrete data, so proper discretization IS an issue, neural networks that user perceptrons handle continuous and discrete values, but you have to be careful how you encode nominal values.
What ready-to-use programs to use
Weka is a java-based program full with loads ready to use machine learning algorithm, evaluation methods etc. There is also excellent data mining book that uses Weka for all the examnples: Data Mining: Practical Machine Learning Tools and Techniques
Knime is somewhat similar to Weka (uses Eclipse), it also has a companion book: Guide to Intelligent Data Analysis
Jubaus is a machine learning framework (no GUI) with Java (among others) bindings.
Pointers to easy-to-understand code for learning purposes
If you want to implement an algorithm by yourself or study from a source-code, I highly recommend Programming Collective intelligence. Although it uses Python and not Java, and also it has been criticized for coding style and too shallow theoretical background, it shows how popular learning algorithms are implemented in easy to comprehend step-by-step manner.