So I'm looking down the list of my classes for my BS in IS (I like saying that), and noticed that I am going to have 2 Java programming classes (Java Programming 1 and Java Programming 2, duh). I was just curious where does Java fit into today's world? By that I mean:
Are Java Programmers high in demand?
Is this still a popular programming language?
Will I see some awesome benefits by learning this language?
Thanks in advance.
Posts
2. It used to be more popular, but programmers are getting a bit tired of the large amount of syntactic sugar necessary, and have been going to Ruby and Python to escape it. However, in the corporate world, it's as popular as ever.
3. You will learn a great deal about how to use object-orientated programming, how to make a great API, and how not to make a GUI interface system.
Java is the staple of almost all computer science courses.
I have taken several Java courses in the past (though I am no longer a CS major) and I never had any problems at all learning it. C++ was more difficult for me despite me already knowing many of the basics it shares with Java.
However, I can't speak for everyone and I usually pick up on these kinds of things very quickly. Your mileage may vary.
Feel free to add me on whatever network, it's always more fun to play with people than alone
Once you get past that, languages are separated by purpose and syntax, but programming is programming regardless of what language you work on. Java is very forgiving and is a good one to start with.
Learning an object-oriented programming language (or at least your first OO language) will most likely be fairly difficult; just take your time, don't try to glaze over any concepts you don't fully understand and make sure you have a good reference book or site.
And java as it pertains to java isn't as important-- once you pick up programming it is easy as pie to switch to others. Syntax isn't the hard part, programming well is. And good programming traverses languages.
B.net: Kusanku
If it's your first language, it won't be hard at all. Java syntax can be more "wordier" than other programming languages so it can be a pain to adapt to having to type out more than in say, C. On the other hand, you don't deal with as many possible ways to shoot yourself in the foot as in C.
Steam Profile
3DS: 3454-0268-5595 Battle.net: SteelAngel#1772
The book gives you a great intro to Java and OO programming using BlueJ and later weans you off blueJ and onto building your own GUIs although your course likely has a recomended text book anyway and an extra £34 maybe isnt worth it!
BlueJ even on its own is great for beginners to play around and learn in although you would never use it for anything more than that. Its especially great for helping with the concepts of OO.
Java is nice language to learn and it was great for me as my first language, the only thing to watch out for is that it handles a lot of things for you in the background (pointers etc.) which languages like C wont.
C# might be having a lot of hype and growth in some regions, but it's share is no where close to Java. The same goes for Ruby and Python -- they're no where close to Java in popularity, but you should learn one of them anyways (they're support languages). C and C++ are more popular combined, but they are different languages. Being a C++ expert will not make someone a C expert and vice versa.
Java's syntax is very nice, and you should also learn the Java style conventions ( http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html ). As a starter language, it's better than other C style languages, but I don't think it's the best for it. It's not easier or anything, but the libraries are fairly comprehensive. You'll see a lot of benefits from learning it though, since the documentation and support are excellent.
A lot of gripes of Java is perception of speed. With the latest Just-In-Time compilers, it'll never be an issue for your programs, even including startup time (unless your program sucks, which will happen). The latest hotspot JVM is faster than C/C++ in some areas, and has fast allocation (and garbage collection is now on par with manual memory deallocation). If you don't understand what that means, don't worry about it; just know that overall Java's going to run marginally slower for most apps, but that gap is slowly closing as run-time optimization makes headway.
Don't let the rumor mills about Java get you down, and good luck with it.
1. The programming language syntax,
2. The programming paradigms and semantics implemented by the language, and
3. The libraries (e.g., pre-built components and functionality) that people use when writing software in the language.
You can more-or-less learn the syntax of a programming language in a couple of days, but that doesn't tell you anything. As for concepts and paradigms, there are a swath of them to learn, and you really want to learn them all at some point. A good programmer will be well-versed in basic control constructs, procedural/imperative programming, object-oriented programming, event-based and asynchronous programming, concurrent programming, reflection, dynamic programming, functional programming, static typing, dynamic typing, managing your own memory, using garbage collection, logic programming, and so on.
Programming languages are largely differentiated by 1) which of these concepts they use and 2) how they use them. For example, C is imperative, uses static typing, and makes you manage your own memory. Java is OO, sort of supports event based programming, has good support for thread-based concurrency, has decent support for reflection, is statically typed and uses garbage collection. Python is usually programmed as imperative + OO, has a gimpy concurrency model, is generally poor with asynchrony, has excellent reflection and dynamic programming features, and is dynamically typed.
The good news is that if you understand how to write multithreaded code in Language A, then writing it in Language B is going to be pretty easy. OO is OO in just about every language, with small differences, mostly in the inheritance and information hiding models. If you've never managed your own memory before, then writing code in a language like C or C++ (where you have to do that) is going to be painful for you.
"Similarity" between programming languages is really defined in these terms. Java and C# are not "similar" because they share similar syntax (although they do), they're similar because they picked similar concepts off that list above. Same with Python and Ruby.
Libraries are the main reason why you can't become proficient in a language in a couple of days. Every programming language has its own set of thousands of library calls that do things for you. Everything from String manipulation to XML parsing to thread management, etc. You have to know which of these to call and where to look to find what you're looking for. An experienced programmer in a language has these libraries mostly memorized. For example, I have the Java library, large as it is, basically memorized since I have used it almost daily for 10 years. When I don't remember exactly what I need I at least know what package it's in and where to go look it up, but I don't spend a lot of time looking things up.
For example, the Java libraries are documented here. The Python libraries are documented here, and so on.
So, if you learn Java, it won't be a waste. You'll still be missing out on fundamental concepts, since no programming language implements them all. No matter how good you are with Java you will not, for example, have expertise in memory management, functional programming, dynamic programming, or dynamic typing. You'll find it very easy to learn C# afterwards, however, because C# and Java use the same basic concepts and paradigms, with minor syntactic and semantic differences. You will have to re-learn the C# libraries, though, although if you are familiar with the Java libraries you'll be looking for analogs of things you already understand rather than looking at the language completely afresh.
Yeah. My company is hiring people with java experience almost every other week. Big money too.
Check out my band, click the banner.
P.S. Just wanted to thank all the people that posted, I appreciate the info!
I just want to add that any programming class really is about what you make of it, more so than other classes. You will miss out on a lot of the stuff that DrF mentioned if you're only taking the two classes. To spin an analogy, in CS you build things and you'll probably learn how to use a nail, screwdriver, and sketch a simple blueprint. If it's something you enjoy, try to put more effort into making detailed blueprints and sound construction methodology. The rest will come. If you just want to pass the courses, work the screwdriver.
Also, I'll echo the other posters and say that Java is a useful language to know and a pleasure to work with. About 1% of my job involves Java, but I do relish that time.
If you ever need to talk to someone, feel free to message me. Yes, that includes you.
Speaking of that, I had classes in LISP, Scheme, and even Prolog... LISP I can understand, but the others were somewhat out there.
.NET has become very popular, especially in business application development. I do all of my work in .NET and have grown to prefer C# over Java personally.
I learned Java in school though (and my first 5-6 classes were all in it), and it worked out well. You learn good tenets of OO design without having to worry about things like allocating your own memory and pointer manipulation in a language like C++. If you ever want to get into game development or embedded systems, you'll definitely need to learn C/C++ at some point. My main complaint with Java compared to .NET is how much more of a pain in the ass it is to build rich user interfaces.
The university I went to has since switched to teaching .NET (probably C#) as the first language for students, but it's still fairly similar to Java - and I'm sure many other schools are doing something similar to yours.
So to answer your question, even if you never professionally work with Java, you will still learn a lot from it.
Die in a fire. That's all I'll say, because I don't want to be infracted for going off topic.