# Java - A good place to begin if over all goal is ML and Ai?

I am currently studying Java (Se && EE). I am wondering if it is a good platform for developing ML algorithms for AI.
Areas of interest: facial rec - Speech Rec - understanding conversation in group conversations.
Financial Institutions: Risk assessment ML, etc.

• Hello james.professionally,I would suggest python and C/C++ for instance;Python has several powerful libraries or packages,that will help with machine learning such as NumPy. look at C/C++; many machine learning algorithms are processor constrained so AI software engineers try to get as close to the metal as they can. C++ has a speed advantage over Java much (but not all) of the time. Java is often better for big collaborative projects.Also go through this post ai.stackexchange.com/questions/3019/… – quintumnia Apr 1 '17 at 14:14
• Hello! Thank you for the information. I knew Python was held in high regard when it comes to Machine Learning. I have heard brief talks about Java in ML specifically Hadoop. I Had plans to start dabbling in Python at some point and with answers such as yours above, I think it would be a wise choice. Thank you! – James Apr 1 '17 at 16:55
• We're just finishing up a development cycle for mobile applications utilizing Java and Objective C. We're likely going to recode in C++, not only for the speed advantages, but to eliminate the need for distinct languages on iOS and Android. (i.e. if you're thinking about mobile applications, C++ has advantages.) – DukeZhou Apr 1 '17 at 19:46
• Sounds interesting, but why C++ in terms of advantages on mobile? apart from delivering better speed than java, Im not sure why. – James Apr 2 '17 at 6:50
• You should see OpenCV. It has some very good libraries for Machine Learning and Artificial Intelligence related kinds of stuff. Also, you can easily import them in python, Java and C++. – Ugnes Apr 23 '17 at 13:23

If goal is to develop ML algorithms then focus on Maths concepts linear algebra, probability and statistics. Try out CS problem solving basic data structure and algorithms. Python has good ML libraries but if you know java then you can pick python easily.

• Thank you for your reply, @Vikram . I am currently studying Linear in my spare time and have a general interest in statistics. Will take a look at CS problem solving. Watching a lot of videos recent on Python. It does seem it may be quite an easy transition. – James Apr 23 '17 at 9:59

You can't "develop" ML algorithms without statistical knowledge, it simply doesn't work that way and it's impossible.

Programming is cheap for modelling, anyone who has done a computer science degree can do it. It's just like giving some inputs and giving something back. Lots of framework can do that for you, and it's easy.

In order for you to "develop" ML algorithms, you should pursue a mathematics degree. Generally, you're expected to have a PhD or something similar to "develop" ML algorithms.

If you're really interested in programming, you should do R and Python. Java is not a common data science programming language.

As others have pointed out, your level of maths/statistics knowledge is probably more important than your chosen programming language. That is, particularly true w/r/t developing (presumably new) ML algorithms. OTOH, from an "applied ML" perspective, where you just use pre-baked implementations of existing algorithms, one of the big questions is "do good libraries for these various operations exist in language $X"? Where the value of$X is "Java" the answer is "yes". There are tons of high-quality libraries of most popular and widely used ML algorithms. There are also tons of libraries for nearly everything else, which helps when constructing wider systems which incorporate elements of ML/AI.

That said, w/r/t machine learning specifically, there are probably more extant libraries and what-not in Python or R, than in Java. Also, from a "rapid development" point of view, you may find that Python has some advantages as as of a result of its dynamic typing and lack of "boiler-plate" as found in Java.

Net-net, I'd say Java is a fine choice, along with Python or R, with C++ also in the mix. It may not be the perfect choice, but it's absolutely "good enough" and then some.

If you want a feel for some of the projects that exist now in various languages, to go mloss.org and use the filter by language feature. Click around there and examine some of the options you find.