• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Why is Java so hard to learn?

 
Greenhorn
Posts: 15
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
 
author
Posts: 23951
142
jQuery Eclipse IDE Firefox Browser VI Editor C++ Chrome Java Linux Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

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
 
Bartender
Posts: 6109
6
Android IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

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
Posts: 6109
6
Android IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

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.
 
Greenhorn
Posts: 17
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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!




 
Bartender
Posts: 10780
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

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
 
Ranch Hand
Posts: 191
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
you should try c++ if you think Java's hard!
 
Ranch Hand
Posts: 35
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

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.
 
Bartender
Posts: 3648
16
Android Mac OS X Firefox Browser Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
 
Greenhorn
Posts: 9
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Dude, you've probably never learned JavaScript, since you think Java is difficult. Try reading the book on JS by Ethan Brown. This is a real hell )
It all depends on learning resources, I think. If you're interested (if you're still alive, of course, what I hope for) try codegym.cc. I already wrote, and not only am I about this resource here: https://coderanch.com/t/638289/java/learn-Java#3293864.
Since November 19', I have reached level 9, but this is incredible progress for me (I'm just stupid). Try, maybe you enjoy it.

GLHF.
 
Saloon Keeper
Posts: 15524
364
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Well, it also depends on what part of the language you're dealing with. I have to admit I find the whole prototype aspect of JavaScript annoying and confusing, especially when combined with inheritance. On the other hand, JavaScript uses a single-threaded programming model, so in that regard Java is much more difficult because to do multi-threaded programming effectively you have to be comfortable with working with memory barriers.

Another thing that I find more difficult in JavaScript is that it's not always clear what 'this' refers to, because you're not always working with 'instances of classes', but sometimes event sources like pieces of the DOM.

It all depends on what you're used to.
 
reply
    Bookmark Topic Watch Topic
  • New Topic