Is it worth learning Java? And what's the best way to learn it?

:eek: I thought they stopped making Quattro Pro in the 1990s.

Maybe people aren’t making applets any more, but other than that, Java’s doing just fine.

When learning these things (java, c#), you’re not really learning the language, you’re learning the frameworks. And there’s many of those, and each is bigger than the next. So you can learn one part of java, or you can learn one part of c# (eg, ASP.NET or WPF), and you still haven’t learned anything else.

You said you do SQL. C# has this really cool thing called LINQ. It’s SQL-like querries embedded in the language itself, which can target databases, XML files, even plain data structures. You might try learning this one part of C# and it’ll be very interesting for you and useful.

For browser programming, yes. But javascript is much better supported than flash in that respect. As for server-side programming, java is so much more popular than anything adobe has to offer it’s laughable even to bring up adobe.

ETA: except for flash video server or whatever it’s called.

lots of free books on java here http://www.freeprogrammingresources.com/javabook.html

I am teaching myself java right now too. After struggling through many books and just getting confused, the one that made a difference was
“Object-Oriented Programming and Java” Danny Poo, Derek Kiong, Swarnalatha Ashok (springer 2008) http://www.amazon.com/Object-Oriented-Programming-Java-Danny-Poo/dp/1846289629/ref=dp_ob_title_bk as it spent the first three chapters clearing explaining OOP.

Ugh, I just read the first chapter on Amazon. I hate when people try to explain OOP by saying, “imagine an apple. imagine doing things to the apple.” It also includes a great note on how amazing Java applets will be for the web. Lol. But it’s an interesting perspective into how, historically, OOP was advocated and explained, and why people were so hyped up about it. Object was a hype word applied to everything. Whole operating systems were ‘designed’ around it. I prefer to consider the issue in more practical terms, and I think most modern programmers, though extremely appreciative of OOP and of the language syntax features which developed later, do too. Funny story: Linus Torvalds was so put off by the Object bandwagon in his youth that he has shunned C++ from the linux kernel. No doubt to the platform’s immense benefit :smiley:

Yeah, as others have touched on, this only applies to java applets. No one uses those anymore, this much is true.

But to ignore J2EE and say “java is dying” for “websites” is very misleading. It’s very much one of the top techologies for server-side applications, which frankly is where all the real work is done these days. At least for business apps. Browser-based gaming industry is also becoming huge tho and flash/activeX will be the main players in this space.

Given those skills, I’d say that you’re largely a total stranger to programming. Learning Java would be a good start.

C# itself is quite similar to Java. Microsoft originally tried to combine Java with its proprietary technology, but Sun successfully sued. Therefore, Microsoft created C#. In many ways, C# is a better language than Java itself, but C# is only a tiny piece of what Microsoft had in mind. If you know Java and Java alone, you could probably be a good developer. If you know C# and C# alone, you won’t get anywhere.

C# is part of the larger .NET platform and the interface from C# to .NET is 90% of the programming.

Officially, C# is just a programming language, and you could use almost any programming language – even in theory Java – to work in a .NET environment, but that’s just a cover story. There is absolutely no independent C# programming without The truth is that C# programming is immersed in Microsoft technology and interfaces. The whole purpose of C# and .NET is to push Microsoft technology. If you are familiar with VisualStudio development environments in C and C++, learning C# will be simple. However, if you don’t know the Microsoft environment, learning C# won’t get you too far.

Yes, there is still a lot of Perl out there. I love Perl 5, but I see the writing on the wall. I work in the Subversion project, and almost all of the Perl scripts have been replaced with Python scripts. ViewVC was rewritten from Perl to Python. Google does no Perl programming – only Python. Almost all the new stuff I see today is now in Python and not Perl.

I hate Python for many reasons. First of all, it is white space sensitive. The idea is that indenting is suppose to show the start and end of if/then/else and while loops instead of curly braces, but I like breaking up long lines into shorter lines for readability, and Python won’t let me do that very easily. Python is also 100% object oriented whether you like it or not, and sometimes I find that gets in a way of a simple clear script. And, Python error messages are completely befuddling to me. Most of the time, they’re absolutely meaningless and cannot even point to the line with the actual error in it.

Yet, that’s the way the world is going, so I shall go there too.

It’s not just theory. You can install Visual J# if you really want Java-on-.NET. But it’s dumb. C# started out very similar to Java, but it’s advanced a lot with each version. Today, C# 4.0 has language fatures that Java can only dream of (eg dynamic typing! built-in SQL! lambdas! extension methods!).

Yeah, I guess. But soon Java will be used to push Oracle technology. (Oracle is buying Sun.) How fun will that be?
Btw, the flipside of “C# is easy, the giant set of frameworks is hard” is that once you learn the frameworks, you can switch to other languages. Think Python syntax is the best (I sure do) and that dynamic typing should be the norm? You can switch to IronPython (or Boo) within a week and carry over all your framework knowledge.

To a proper programmer the book is far too easy and obvious. If like me you are struggling to get a grip on OOP then it is a good starter, much better than most of the books which throw you cold into coding in the first chapter

I want to add (as a programmer myself), that taking a job as a JAVA programmer puts as much emphasis on the word *programmer *as the language. Most programmers will tell you that what language you work in doesn’t really matter very much, it’s all Turing-complete and you’re basically solving he same problems either way.

What will be expected of you is a knowledge of datastructures, algorithms, program design, paradigms (with emphasis on Object Orientation), probably also Object Relation Mapping, MVC and Inversion of Control if you’re going into EE, and programming patterns. And you’re even going to need to know some computer science at some point…complexity and operating system architecture.

See it as taking an accounting job in France. On one hand you need the language, on the other hand you need a good grasp of economy, law and accounting.

But to answer your question: Yes, JAVA is a good language. It’s used widely, the VMs are fast and it has some fantastic libraries such as Spring and Hibernate, and there are plently of jobs for programmers. On the other hand, what language you use doesn’t really matter very much. I’m a JAVA and C++ programmer, but I could switch over to C# in a matter of weeks (and I could start working in it this afternoon). So expect the actual language to only be the first step on the way.

But the algorithms, program design, paradigms, and patterns you will use depend on the facilities and libraries of the language you are using. Consider the fact that C++ possesses OOP influences program design vs C which does not. Similarly for garbage collection in Java vs C++, but also for many much smaller and more focused features. No, you definitely need to be familiar with the technologies you’re using. You need to know when you can pull up a library function to do the work of 100 lines, or when you can use databinding instead of brute force, a closure instead of some complex IPC, etc.

Turing completeness has little to do with it. (Whenever anyone mentions turing completeness, what they’re saying is almost always bunk.)

To pick a nit, HTML and Javascript aren’t programming languages–they’re markup languages.

I took a Computer Science minor for fun in college, and the first programming class any CompSci student took used Java. In addition to doing more work with Java, I went on to also become decently familiar with C (through my Operating Systems class), as well as doing a bit of programming in FORTRAN 77, Perl, Lisp, Smalltalk, and Prolog (in my Programming Languages course). For me, Java served as a very good introduction to programming and worked well as a springboard for the other languages.

I wish I could remember the title of the text used for my first course–it was by far the best CompSci text I ever had. If I think of it, I’ll check my shelf when I get home.

Javascript is most definitely a programming language. It is Turing-complete, object-oriented, garbage-collected, and can implement any algorithm.

If you want to pick out languages in the OP that aren’t programming langauges, SQL would be the other offender.

At what point did I tell him to not familiarize himself with the tool being used? I pointed out the fact the language is merely the first step on the way. Of course he needs to under stand OO vs imperative vs logic vs functional.

Algorithms and datastructures are on the other hand universal concepts. A recursive function works the same in Java as in Haskell, it’s just implemented and compiled differently. The order a sorting algorithm is the same, no matter in what language it’s written in. Give me a programmer who knows the theory and I’ll give him time to learn the tool. Give me a programmer who knows the tool but not the theory, and I say hit the books some more.

No, SQL also is a programming language. It’s just declarative instead of the usual imperative languages that most people are used to.

Not all of them. Java doesn’t have tail-call optimization. :stuck_out_tongue:

Well, I could certainly be wrong about that. I am extremely far from an SQL expert, so it certainly wouldn’t surprise me if the language has capabilities I am unaware of. That said, programming language or no, it certainly seems pretty imperative to me.
UPDATE employee SET salary = salary*10 WHERE name = ‘Sofis’;
seems like a “do this to that” kind of statement to me.