Win a copy of Testing JavaScript Applications this week in the HTML Pages with CSS and JavaScript forum!
  • 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 all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Bear Bibeault
  • Ron McLeod
  • Jeanne Boyarsky
  • Paul Clapham
Sheriffs:
  • Tim Cooke
  • Liutauras Vilda
  • Junilu Lacar
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • fred rosenberger
  • salvin francis
Bartenders:
  • Piet Souris
  • Frits Walraven
  • Carey Brown

What is best way to learn Java Core deeply?

 
Ranch Hand
Posts: 514
1
Eclipse IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello!

I want to learn Java Core deeply!

Unfortunately I can't invent any idea how to do it. With SpringMVC I can create website, with Swing I can create desktop app.

Any ideas how to learn Java Core deeply?

Thank you!
 
Bin Smith
Ranch Hand
Posts: 514
1
Eclipse IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
This problem is about some cool project to learn Java core deeply!
I don't have any idea on what to code to study Java Core deeply!

Thanks again!
 
Ranch Hand
Posts: 1283
Netbeans IDE Chrome Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
once you have done basic java books.. then you can refer more advance p2p java books. I started reading behind virtual machine.. and it reveals lots hidden features of java, which are not mention in basic books

HTH
 
Bartender
Posts: 10777
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:This problem is about some cool project to learn Java core deeply!


It really depends on your definition of "core". To my mind, Spring isn't even close, but I'm sure others will disagree.

What I think of as "core" Java doesn't even include Swing, let alone Spring, so I'd probably look at a console game like Nim or Mastermind or "The game of Life".

Alternatively, write your own doubly-linked List, or HashMap; or an ATM machine interface using the console that actually updates accounts and uses PINs.

The possibilities are endless. The only thing I can advise is: pick something that interests you.

Winston
 
Bin Smith
Ranch Hand
Posts: 514
1
Eclipse IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you very much for replies!

I want to get a job as Junior Java Developer !

I have some experience learning Java core, Swing,Spring,Hibernate,MyBatis.
But all this does not give me a job untill I know what is static,final,abstract,interface very very well !

Books are agood but I want to code a lot.

Where can I find out what is "The game of Life" game. Is it serious at least?
 
Java Cowboy
Posts: 16084
88
Android Scala IntelliJ IDE Spring Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:Where can I find out what is "The game of Life" game. Is it serious at least?


Google, or Wikipedia: Conway's Game of Life.

It's an interesting and often used exercise for learning how to program. Definitely a project you could try to improve your Java programming.
 
Marshal
Posts: 67424
173
Mac Mac OS X IntelliJ IDE jQuery Java
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Winston Gutkowski wrote:

Volodymyr Levytskyi wrote:This problem is about some cool project to learn Java core deeply!


It really depends on your definition of "core". To my mind, Spring isn't even close, but I'm sure others will disagree.


Not I. Spring, and other 3rd-party frameworks, don't even come close to begin considered "core".

What I would consider "core" is anything that you get with a bare-bones JSE installation, excluding Swing and AWT*; anything else is "non-core".


* Which in my opinion should be add-on packages as they are so little used in real-world Java development. But that's another show...
 
Bin Smith
Ranch Hand
Posts: 514
1
Eclipse IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks for replies!

So you believe that Java Core doesn't include Swing and AWT.
I was coding on Swing and know exactly that it requires to know a lot of Java Core.
In Swing you should really think and know Java Core well.

What about Java FX ? Isn't it close to Java Core like Swing.

The actual question is what can I develop to understand Java Core deeply?
I don't have idea what to code to learn Java Core.

Thank you!
 
Winston Gutkowski
Bartender
Posts: 10777
71
Hibernate Eclipse IDE Ubuntu
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:So you believe that Java Core doesn't include Swing and AWT.


Yes, but as I say, I'm quite purist about these things. You can write perfectly good Java programs - even quite complex ones (including Spring and Java FX) - without knowing Swing.

The actual question is what can I develop to understand Java Core deeply?
I don't have idea what to code to learn Java Core.


Have you ever written your own linked list? Do you understand all - or even most - of the Java Collections Framework? Or Generics? Have you ever used enums, or their collections, to do anything complex? Have you ever used ReentrantLock's? Or BitSet? Or written a really fast prime number generator/checker?

This, to me, is core Java. No networking, no "webby" stuff, no GUIs, no FX's (or any other alphabet soups). It's arrays and collections and locks and Iterators and enums. It's algorithms and structures, and understanding what makes classes and objects tick - by which I mean understanding Object Orientation, not the code that lies behind every class I use.

Sorry if I sound like a zealot, but Java was the language that taught me how to "think objectively" (and it took me about 5 years - after 25 in the procedural world). Before that, I was simply a competent procedural programmer, even when I worked with C++; which may sound odd, but you can get a long way with an OO language by just knowing how to write good, normalized code. But it doesn't make you an OO programmmer.

To my mind, people start branching out into all these alphabet soup things long before they've actually mastered the language. I've met lots of programmers working on highly involved web-based systems that wouldn't know a subtle synchronization problem (either not enough or too much) from a hole in the ground.

Now that's no reason not to try any of the things you've been talking about, but if you really want to learrn core Java, then get back to basics.

My two-penn'orth.

Winston
 
Bin Smith
Ranch Hand
Posts: 514
1
Eclipse IDE Java
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks for reply!

No, I really don't know about ReentrantLock or BitSet. I don't have big understanding of Generics and enums.

I should definitely cover tutorials on enums and generics you pointed out.

Again I don't think I will benefit much of those tutorials. Because you understand something very well when you meet it in real code when you know how to apply them and what you get from them.
Tutorials answer question "what is it" rather than "why do I need it".

Again doing one,two,three classes projects won't let you conceive OOP.
The question is what project can I create to conceive OOP,interface,anstract and equals and hashcode?
 
Winston Gutkowski
Bartender
Posts: 10777
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:The question is what project can I create to conceive OOP,interface,anstract and equals and hashcode?


I've tried to give you a few, but one more time: Have you ever tried to write your own HashSet or HashMap? That'll teach you a lot about all the things you mention.

What about a hash-based MultiMap? As you can see, it's already been done, but there's no such animal in the Java collections framework; and doing it properly will involve learning a lot about basic stuff - including testing.

If you want to tackle something more sophisticated: What about the Traffic Light problem (or a limited version of it)? Start out with a crossroads, with a single lane of traffic in each direction, and then work from there (left/right-turn lanes, extra lanes in each direction, transponders on cars rather than pressure switches in the road, etc.).
The great thing about it is that it virtually forces you to think objectively, because if you try to solve it with simple procedural code, you'll end up in the looney bin.

Winston
 
Bin Smith
Ranch Hand
Posts: 514
1
Eclipse IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
OK!

MultiMap sounds interesting.
Next your link is now working for me at all, also I can't access even this site - http://citeseerx.ist.psu.edu/.
I need to wait very long time while chrome tries to load page and in vain !

I am just now covering deeply java.util.HashMap in my tutorial. But don't read it now it is not finished yet.
For the last week I am doing tutorials on Java Collections not only for me but for every future Junior Java developer.
To become Junior you must know Java Core !

I call everybody who wants to be Junior Java developer to cover my indepth tutorials on Java Collections - hot topic on any interview for juniors. If you have any remarks don't shy to comment !
 
Winston Gutkowski
Bartender
Posts: 10777
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:Next your link is now working for me at all, also I can't access even this site - http://citeseerx.ist.psu.edu/.
I need to wait very long time while chrome tries to load page and in vain !


Yeah, I'm having problems too - it was working though.

I'm surprised that there aren't more general pages about it (the Traffic Light problem), because I've heard it cited many times as a classic problem that defies a procedural solution, but is actually relatively simple when you get objects cooperating with each other. It's actually quite a fun exercise too. I used to know a good page that describes it generically, but darned if I can remember where it was.

All I can suggest is Googling something like "Traffic Light programming problem" or "Traffic Light algorithm" - unfortunately, the latter gets you a lot of commercial sites trying to sell you their "better mousetrap".

Winston
 
Rancher
Posts: 1041
6
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Winston Gutkowski wrote:
Before that, I was simply a competent procedural programmer, even when I worked with C++; which may sound odd, but you can get a long way with an OO language by just knowing how to write good, normalized code. But it doesn't make you an OO programmmer.



Bjarne Stroustrup writes in his book The C++ Programming Language about the several paradigms supported by C++: procedural and object-based besides object-oriented. Different problems, different approaches. It is a nice book and worth reading even if one's primary focus is not C++.

It was much fun to translate it into my native tongue. Okay, to be more precise: your humble narrator was actually one of four translators.
 
Winston Gutkowski
Bartender
Posts: 10777
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:Next your link is now working for me at all, also I can't access even this site - http://citeseerx.ist.psu.edu/.


FYI: It's working now.

Winston
 
Winston Gutkowski
Bartender
Posts: 10777
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Ivan Jozsef Balazs wrote:Okay, to be more precise: your humble narrator was actually one of four translators.


Well, good for you anyway. I always remember hearing that Bjarne was very surprised at the success of C++ because he'd never really planned it as a "next generation language".

Winston
 
Ranch Hand
Posts: 1528
8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
One way to learn it deeply was solving difficult questions. There was a site www.blackbeltjava.com but it is closed now for some reason. One can search for such websites and analyze each question
 
Ivan Jozsef Balazs
Rancher
Posts: 1041
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator


Bjarne ... success of C++



It was quite a feat to canalize the OO ideas into C main stream.
 
Ranch Hand
Posts: 231
1
Eclipse IDE Opera Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:I want to learn Java Core deeply!


Take a shallow or simple core Java book, and plunge somewhere deep or at least a dark place like under-the-bed to make you feel deep. Please don't beat me, had enough !
....just kidding
 
Ivan Jozsef Balazs
Rancher
Posts: 1041
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Rajdeep Biswas wrote:
Take a shallow or simple core Java book
....just kidding




Наш друг, er, our friend, the OP might not be native speaker, so his choice of words might be different from yours.
Bear with us non-native speakers.
 
Monica Shiralkar
Ranch Hand
Posts: 1528
8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
After each chapter of Kathy Seirra's book. 'Java SCJP',there are objective questions. Those are not straightforward or easy I feel.If you analyze each it will be good learning.
 
Ranch Hand
Posts: 36
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:
I don't have any idea on what to code to study Java Core deeply!



To learn Java deeply you need to go beyond Java. You need a formal education in computer science.
 
Bear Bibeault
Marshal
Posts: 67424
173
Mac Mac OS X IntelliJ IDE jQuery Java
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Ulf Lindqvist wrote:You need a formal education in computer science.


I disagree. Very few of the developers I work with, and yes, very good ones, have a formal education in CS.
 
Ivan Jozsef Balazs
Rancher
Posts: 1041
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Bear Bibeault wrote:
I disagree. Very few of the developers I work with, and yes, very good ones, have a formal education in CS.




My best colleagues have studied electronic engineering. They know how the dam*d thing works down to the electrons' level.
 
Bear Bibeault
Marshal
Posts: 67424
173
Mac Mac OS X IntelliJ IDE jQuery Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Ivan Jozsef Balazs wrote:My best colleagues have studied electronic engineering. They know how the dam*d thing works down to the electrons' level.


Heh. Both my degrees are in EE. I should probably be designing antennas or something like that...
 
Ulf Lindqvist
Ranch Hand
Posts: 36
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
---
 
Ulf Lindqvist
Ranch Hand
Posts: 36
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
---
 
Ulf Lindqvist
Ranch Hand
Posts: 36
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Bear Bibeault wrote:

Ulf Lindqvist wrote:You need a formal education in computer science.


I disagree. Very few of the developers I work with, and yes, very good ones, have a formal education in CS.



That's the "look at me and my dog" argument. People tend to overvalue their personal experience and think it's generally relevant. How do you know your colleges are "very good ones"? They may stink big time if you ask someone else and they may be downright lousy compared with most programmers with a CS degree.

If you want to become a good programmer and have a satisfying long-lasting career in computing the safest bet is to get a degree in CS (or related engineering or science field as substitute). It will tilt the Wheel of Fortune in your favour. There will be exceptions of course but the average Joe (read you) is much better off with the degree than without it. And there's statistics to prove it.

There's no reason to hide the benefits of a CS degree from budding programmers and claim they will do equally well by reading "the Zen way"-style programming books on their own. Unless you're trying to be non-elitist politically correct of course, or are blinded by a limited personal outlook, or conspiring to produce cheap blue-collar coders for programming sweat-shops.

Young man and woman - get a degree !!!
 
Bartender
Posts: 11445
19
Android Google Web Toolkit Mac Eclipse IDE Ubuntu Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Ulf Lindqvist wrote:If you want to become a good programmer and have a satisfying long-lasting career in computing the safest bet is to get a degree in CS.....And there's statistics to prove it.


I would be very much interested in seeing the statistics which proves having a CS degree makes one "become a good programmer "
 
Bin Smith
Ranch Hand
Posts: 514
1
Eclipse IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks to everybody!

I have a degree(if I understand it correctly) in informational-communicational technologies.
I wish I would never be there! Never, never!
It is a kind of parody, big parody ! You play a parody to waste your time, some people play a parody all their life.
I got from that study NOTHING! Except paper so called diploma and basics of Turbo Pascal and C.
People would never become programmers studying programming in educational establishment for diploma !
They should feel like programming, they should love coding, reading, thinking,asking,answering !
Education is just what you do and not what wise drunken people explain you for big money.
How much doors,opportunities,dreams can be opened doing programming ...
Persons with no computer education like ME are better programmers than those with big CS degree.

I really sympathize those programmers who work and learn to earn a lot !!!
 
Ulf Lindqvist
Ranch Hand
Posts: 36
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Maneesh Godbole wrote:

Ulf Lindqvist wrote:If you want to become a good programmer and have a satisfying long-lasting career in computing the safest bet is to get a degree in CS.....And there's statistics to prove it.


I would be very much interested in seeing the statistics which proves having a CS degree makes one "become a good programmer "



Just look around and you'll see proof everywhere.

In the general population there's a strong correlation between education level and professional success. And that goes for CS graduates too.

And among programmers, if you break down any cohort on education you'll find the CS degree fraction consistently at the top (followed by graduates from related fields).

There's a problem here and that's how to measure "good programmer". Easiest is to use prosperity. If you're well paid, seldom involuntarly unemployed not even in market downturns, feeling great job satisfaction, etcetera, then you're a good programmer. Defining "good programmer" in the hacking sense is more problematic. Is it how quickly you lay down code or is it how fast your code runs or how few bugs you leave behind or how many design patterns you know how to apply? There's no generally agreed measure of hacking ability so I prefer the prosperity measure - if you prosper you're good.
 
Maneesh Godbole
Bartender
Posts: 11445
19
Android Google Web Toolkit Mac Eclipse IDE Ubuntu Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Ulf Lindqvist wrote:

Maneesh Godbole wrote:

Ulf Lindqvist wrote:If you want to become a good programmer and have a satisfying long-lasting career in computing the safest bet is to get a degree in CS.....And there's statistics to prove it.


I would be very much interested in seeing the statistics which proves having a CS degree makes one "become a good programmer "



Just look around and you'll see proof everywhere.

In the general population there's a strong correlation between education level and professional success. And that goes for CS graduates too.

And among programmers, if you break down any cohort on education you'll find the CS degree fraction consistently at the top (followed by graduates from related fields).

There's a problem here and that's how to measure "good programmer". Easiest is to use prosperity. If you're well paid, seldom involuntarly unemployed not even in market downturns, feeling great job satisfaction, etcetera, then you're a good programmer. Defining "good programmer" in the hacking sense is more problematic. Is it how quickly you lay down code or is it how fast your code runs or how few bugs you leave behind or how many design patterns you know how to apply? There's no generally agreed measure of hacking ability so I prefer the prosperity measure - if you prosper you're good.


So do I take it you have no statistics which we can refer to? The one you had in mind when you said "And there's statistics to prove it"?
 
Ulf Lindqvist
Ranch Hand
Posts: 36
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:
Persons with no computer education like ME are better programmers than those with big CS degree.



Statistics tell a different story.

The average CS graduates will outdo you both in prosperity expectation and hacking ability. In short he or she will run circles around you; Get the job you wanted. Get the promotion you expected. And to boot, be happier than you.
 
Ulf Lindqvist
Ranch Hand
Posts: 36
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Maneesh Godbole wrote:[
So do I take it you have no statistics which we can refer to? The one you had in mind when you said "And there's statistics to prove it"?



I didn't have any specific study or report in mind. But there's overwhelming evidence in support of the statistical correlations I was referring to. This came up with a quick Google search. It's just one of thousands taking the prosperity angle in US,

http://www.huffingtonpost.com/steven-strauss/the-connection-between-ed_b_1066401.html

This is a quote:

"In many ways, our two economies have created two separate societies. Those with low educational attainment drift permanently between recessions and depressions, with little stability. Those with high educational attainment experience increased wealth, only mild recessions, and interesting projects with personal growth."

So mark my words: Get a degree or you'll regret it for the rest of your life. And if you're interested in programming and problem solving go for CS. I find it quite astonishing that this advice is challenged by senior members of a public programming forum who themselves most likely enjoy the benefits of higher education in their professional lives.
 
Maneesh Godbole
Bartender
Posts: 11445
19
Android Google Web Toolkit Mac Eclipse IDE Ubuntu Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The link you shared says nothing about CS degree making one a good programmer.
I find your premise of linking prosperity to being a measure of a good programmer a bit skewed. Going by that logic, would you say Steve Jobs was a "good programmer"? Did he have a CS degree?
 
Ulf Lindqvist
Ranch Hand
Posts: 36
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Maneesh Godbole wrote:The link you shared says nothing about CS degree making one a good programmer.
I find your premise of linking prosperity to being a measure of a good programmer a bit skewed. Going by that logic, would you say Steve Jobs was a "good programmer"? Did he have a CS degree?



It should be pretty clear by now that my arguments are statistical in nature and not pertaining to the fate of specific individuals.

And I've explained already why I think prosperity is the best definition of "good programmer". If you have a better one please present it.

Well, unless you present some interesting new arguments I drop out here. I don't care for a lengthy nitpicking session. Thank you.
 
Ivan Jozsef Balazs
Rancher
Posts: 1041
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Volodymyr Levytskyi wrote:

I have a degree (if I understand it correctly) in informational-communicational technologies.
I wish I would never be there! Never, never!
It is a kind of parody, big parody !




It is conceivable that there exist many institutions with very different levels and the education and the diplom they give might be of different value and acceptance.
This phenomenom is not unknown in my country as well.
 
Maneesh Godbole
Bartender
Posts: 11445
19
Android Google Web Toolkit Mac Eclipse IDE Ubuntu Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Ulf Lindqvist wrote:
It should be pretty clear by now that my arguments are statistical in nature and not pertaining to the fate of specific individuals.
And I've explained already why I think prosperity is the best definition of "good programmer". If you have a better one please present it.
Well, unless you present some interesting new arguments I drop out here. I don't care for a lengthy nitpicking session. Thank you.



Not really. You keep talking about "statistics to prove it" but share some link (only) which does not mention CS degrees making good programmers. I never doubted your definition of a good programmer. When I asked some clarification with the intention of understanding your point of view more properly, you immediately duck out, saying its a nitpick.
I would have thought, if you wish to express an opinion, you would have solid proof to back your claims, especially when you make statements like statistics prove it.

 
Ivan Jozsef Balazs
Rancher
Posts: 1041
6
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Maneesh Godbole wrote:
... especially when you make statements like statistics prove it.



Winston Churchill wrote:
“I only believe in statistics that I doctored myself”



 
Now I am super curious what sports would be like if we allowed drugs and tiny ads.
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop
https://coderanch.com/wiki/718759/books/Building-World-Backyard-Paul-Wheaton
    Bookmark Topic Watch Topic
  • New Topic