This is for the FIRST robotics competition.
I was informed of two choices - Java or C (maybe C++? One of the C's)
All things being equal C++ will be better choice. Of course things rarely are equal
I have no experience in Java - but the team (which I just joined this year) is reusing the bulk of the program from last year, which was written in Java (because one of the seniors last year knew Java).
Well, if they already have something working then it's
not a good idea to start total rewrite in different language. It's rarely
a good idea in general, but especially when you are competing with someone.
I would love to use Python, but I have no idea how to get a python environment working.
Python is worse then Java in many aspects. It
very nice to program, but quite slow. The one thing which is fast in Python and slow in Java is C/C++ interface.
I had to go to a presentation this Saturday just to learn how to get Java/C++ running.
My advice WRT to Java/C++ integration: don't try to push small pieces of task to C/C++. JNI is very slow by design: because it must do lot's of thing WRT GC (objects must be compacted and frozen, etc), so while C/C++ procedure may be faster then Java the switch from C/C++ and back will often eat all adavantages of such hybrid approach.
I don't care much about the detriments of Java, especially because I don't have any viable alternative to present and because I'm not experienced+eloquent enough to communicate the difference well.
You must keep them in mind if you want to write competive Java program. It's very easy to lose track of things in Java - and this leads to tons of unneeded work in runtime. It's
possible to write good program in Java, but sadly Java encourages mindless programming so you must resist.
Also, don't forget about the biggest advantage of Java: powerful IDEs. Two top free ones are
Eclipse and
NetBeans. Two top paid ones are
IntelliJ (it has free
community version and
classrom license) and
JBuilder (very powerful but also very expensive). My advice: don't try to program Java without help of IDE (VIM and emacs with bunch of addons can be considered an IDE but only make sense if you were avid VIM/emacs users before trying Java). This is greatest strength of Java and a reason for it's continuing existence.
Also: ask around for what other members of team are using. Often it's easier to use the same IDE as others are using rather then using superior (in your opinion) IDE which does not play well with changes made by others.
And last but not least: learn some version control system if you still have time! My preference will be
Git - but only if you are using
Eclipse or
IntelliJ: NetBeans and JBuilder have unofficial modules (development of official NetBeans plugin
started just recently) thus intergration is not as good. But again: talk with other members of a team.