aspose file tools*
The moose likes Beginning Java and the fly likes Why is Java so hard to learn? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Why is Java so hard to learn?" Watch "Why is Java so hard to learn?" New topic
Author

Why is Java so hard to learn?

Oliver Chase
Greenhorn

Joined: Feb 09, 2010
Posts: 15
Hi,

Learning java and web services. Why is this language so hard to learn? I've picked up python and php so much quicker than Java, and I'm thinking about jumping ship unless forced to by a future employer to use Java.
To me it seems verbose, and has an insane number of moving parts. Maybe that explains why when learning, everything is a prerequisite of everything else, so unless you learn the whole thing, you can't really accomplish anything.
I've never been so completely lost before, and if I was an alien or stock forecaster picking 15 years ago which language would be popular, Java would be my last choice.
Even tools like Maven, which purport to make the configuration easier, are really bad because they don't work. You have an out of date or dead repository, and you're hosed. Because the build process is taken out of your hands, people can't even begin to debug things. And the documentation for projects, always always assumes that you know little things like "maven" or servlets, which are entire topics unto themselves. Java is extremely heavyweight and I don't really see the benefits at all. You have so many competing standards, and no one even knows what the difference between JPA and Hibernate are, nor Spring vs everything else. It's just a mixtape of things in which nothing makes any sense.
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18896
    
  40

Oliver Chase wrote:
Learning java and web services. Why is this language so hard to learn? I've picked up python and php so much quicker than Java, and I'm thinking about jumping ship unless forced to by a future employer to use Java.
To me it seems verbose, and has an insane number of moving parts. Maybe that explains why when learning, everything is a prerequisite of everything else, so unless you learn the whole thing, you can't really accomplish anything.
I've never been so completely lost before, and if I was an alien or stock forecaster picking 15 years ago which language would be popular, Java would be my last choice.
Even tools like Maven, which purport to make the configuration easier, are really bad because they don't work. You have an out of date or dead repository, and you're hosed. Because the build process is taken out of your hands, people can't even begin to debug things. And the documentation for projects, always always assumes that you know little things like "maven" or servlets, which are entire topics unto themselves. Java is extremely heavyweight and I don't really see the benefits at all. You have so many competing standards, and no one even knows what the difference between JPA and Hibernate are, nor Spring vs everything else. It's just a mixtape of things in which nothing makes any sense.


Well, I say "to each his own". Personally, I had a hard time picking up python (okay, more like, couldn't enjoy using it). If you have the option of using a different technology, why stick with something that you can't pick up?

The rule "the right tool for the job" also applies to the compatibility with the user. If you are struggling with the tool, can it be considered "right"?

Henry


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Jeff Verdegan
Bartender

Joined: Jan 03, 2004
Posts: 6109
    
    6

Oliver Chase wrote:Why is this language so hard to learn?


Personal differences? I found it incredibly easy to learn. Some share my experience, and some share yours.

To me it seems verbose,


Yes, it is. That's a consequence of making the language rules simple.

I was an alien or stock forecaster picking 15 years ago which language would be popular, Java would be my last choice.


And you'd have been wrong. Oh well. Are you trying to make a point? Or just venting your spleen?

Also, note that, unfortunately, the way the world works there's not necessarily much correlation between technical merit and marketing success.

Even tools like Maven


So don't use maven. I've been developing with Java professionally for nearly 15 years. In that time, I've used maven on exactly one project. I found some things I liked about it and some things I disliked. If you find that it sucks hippo nards, don't use it. And if you're stuck using it because your boss requires it, that's unfortunate, but it's not a problem with Java.

Java is extremely heavyweight and I don't really see the benefits at all.


So don't use it.

There's no point in somebody touting its merits here. You can find the pros and cons on a bazillion different websites. A lot of people find the pros outweigh the cons for a lot of use cases, but if it doesn't fit your needs in the overall picture, there are plenty of other tools available to choose from.
Jeff Verdegan
Bartender

Joined: Jan 03, 2004
Posts: 6109
    
    6

Henry Wong wrote:Personally, I had a hard time picking up python (okay, more like, couldn't enjoy using it).


Same here.

I picked it up easily enough, but the whole "white spaces matters" nonsense made my brain itch.
Timothy Oldbean
Greenhorn

Joined: Jun 23, 2011
Posts: 17
Hi Oliver,

Java is the first programming language I'm learning. (well since an ok grasp of basic on the MSX for a 9 year old long time ago :-)) I'm 37 and just started my bachelor in software engineering.

I'm having a much harder time at getting it then I initially thought I would. Especially the OO track of thought was a challenge. And you are absolutely correct I can see that it's hard to understand a bit if you don't understand it all so you need to find a way to cram it all in your head at the same time until it clicks.

But I must say that the incubation time seems to be over and I'm settling in rather nicely and starting to feel more and more comfortable and I've passed to point where I have any doubt if I'll "win" this or not. I've even started making my own text adventure just to try out concepts on my own without the benefit of an answer on the next page. This has accelerated my understanding greatly by the way.

One thing I did run into, and maybe the same goes for you, is that I didn't like the book I was learning it from too much. It's the one the module Java in my study works with and also seems to be the book everyone here advices. Head First Java. It's not a bad book, and now that my understanding is progressing and I'm looking at earlier chapters my appreciation for it is growing. It's just that it's put in a manner that rubs me the wrong way. My solution was to get another book and start reading that too and get another point of view. My choice was "Thinking in Java" by Bruce Eckel. Now I feel that book might have also been a bit too dry and catered too much to people transitioning from C had I not have a head start (no pun intended) in Head First Java but together they worked great for me.

I've also started doing the excercises here: http://codingbat.com/ to get some extra practice under my belt and confidence boosts.

The choice if you'll keep going with Java is of course yours but I think you'll run into the same problems in C (and then some due to memory management) and any other truly OO language and you'll have to learn one sooner or later to gain easy entry into the others.

Whatever you do, good luck!





If it wasn't for physics and law enforcement, I'd be unstoppable!
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8008
    
  22

Oliver Chase wrote:To me it seems verbose, and has an insane number of moving parts. Maybe that explains why when learning, everything is a prerequisite of everything else, so unless you learn the whole thing, you can't really accomplish anything.

Well, for good or ill, the designers decided that it should look like C/C++, which is just fine by me, because I 'grew up' with both. I'm quite sure that familiarity was a major factor in their choice, but I also remember that it took me about a year and a half to get properly familiar with C (and I still find programs with enormous header files difficult to read), so I can understand that it wouldn't be for everybody.

I also suspect that you may be dealing with a lot of other stuff in addition to Java at the moment. Thinking "objectively" is NOT easy; nor is it natural. Procedural programs are a lot easier to plan and design, and it's perfectly possible to write decent software without using OO (hell, 70% of the code on the planet was written in COBOL before C came along - now there's a language you can learn to hate ).

If it makes you feel any better, it took me about 6 years (3 with C++ and 3 with Java) before I had my "Eureka" moment with OO, but I've never looked back since.

And the documentation for projects, always always assumes that you know little things like "maven" or servlets, which are entire topics unto themselves.

I suspect you may be referring to a particular methodology. Personally, I think that Javadoc is, by a country mile, the best documentation system I've ever seen for a programming langauge; and that's borne out by the fact that many other languages have followed its lead.

Java is extremely heavyweight and I don't really see the benefits at all. You have so many competing standards, and no one even knows what the difference between JPA and Hibernate are, nor Spring vs everything else. It's just a mixtape of things in which nothing makes any sense.

I have to admit to finding all these alphabet soups confusing myself; particularly as there always seems to be a new 'flavour of the month'. That's why I stick to the language itself as far as I possibly can. However, as others have said, that has less to do with the language than the tools people create for it. Personally, I detest Swing, for precisely the reasons you mentioned above; but then again, I've always found GUI programming tedious. And I'd say that the dizzying array of external libraries is a testament to Java's flexibility.

However, at the end of the day, if you don't like it you should probably find something else that you do; there's no point in beating your head against the wall.

Python programming jobs may be a bit thinner on the ground than Java ones though - although I do see quite a lot of adverts for PHP.

You may also find this article useful.

Winston


Isn't it funny how there's always time and money enough to do it WRONG?
Articles by Winston can be found here
Sam Bluesman
Ranch Hand

Joined: Nov 21, 2004
Posts: 191
you should try c++ if you think Java's hard!


Moosey knows best
Marshall Blythe
Ranch Hand

Joined: Feb 26, 2013
Posts: 32
Oliver Chase wrote:
Even tools like Maven, which purport to make the configuration easier, are really bad because they don't work.


Would you care to elaborate on this assertion? I have used both Maven and Ant successfully. Others use Gradle successfully. All of these build tools "work", but they do have a learning curve.

Oliver Chase wrote:
You have an out of date or dead repository, and you're hosed.


Not if you have your own in-house repository (i.e. Nexus, Artifactory). Any documentation of Maven best-practices will stress this point. And this scenario isn't limited to Maven users: Ant+Ivy users face the same problem.

Oliver Chase wrote:
Because the build process is taken out of your hands, people can't even begin to debug things.


How is the build process taken out of your hands? Perhaps you object to Maven's "convention over configuration" approach. If so then Ant may be more to your liking.
K. Tsang
Bartender

Joined: Sep 13, 2007
Posts: 2517
    
    8

I personally didn't find Java hard to pick up for a daily programming purposes. However, learning the nitty gritty details and internals are hard.

If Java is your first programming language, then step back and learn object oriented concepts. I believe once OO concepts are understood, picking up the rest of Java should be easier.

Java itself is really a platform as well as a programming language. The technologies like Maven, Ant, Hibernate, Servlet etc have their own learning curve.


K. Tsang JavaRanch SCJP5 SCJD/OCM-JD OCPJP7 OCPWCD5 OCPBCD5
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Why is Java so hard to learn?