After Learning Java Syntax, What Next? 293
Niris writes "I'm currently taking a course called Advanced Java Programming, which is using the text book Absolute Java, 4th edition, by Walter Savitch. As I work at night as a security guard in the middle of nowhere, I've had enough time to read through the entire course part of the book, finish all eleven chapter quizzes, and do all of the assignments within a month, so all that's left is a group assignment that won't be ready until late April. I'm trying to figure out what else to read that's Java related aside from the usual 'This is how to create a tree. This is recursion. This is how to implement an interface and make an anonymous object,' and wanted to see what Slashdotters have to suggest. So far I'm looking at reading Beginning Algorithms, by Simon Harris and James Ross."
How about the obvious... (Score:5, Insightful)
How about writing code????
Learning the theory is good, but writing code is very important..
Re:How about the obvious... (Score:5, Funny)
That or you could become a project manager.
Re: (Score:3, Funny)
FInd something that needs writing. Write it. Debug it. Test it and debug it again.
Disclaimer: I am now a project manager. You can slow down the disease but you can't stop it.
Re:How about the obvious... (Score:5, Insightful)
That or you could become a project manager.
The best thing he could do right now is to put Java on hold and learn to solve the same problems in a different language. Something with sufficient study material yet with a very different history than Java would be best, like Lisp or Perl.
I don't think there is such a thing as a good monolingual programmer. The ability to compare different approaches is just too valuable, and the best time to pick up that skill is before you start seeing every problem as a nail. If the OP would rather go into project management, becoming multilingual would be less critical, but still valuable.
Re: (Score:2)
The best thing he could do is stop studying Java for awhile and actually study algorithms or AI or graphics or whatever he's interested in. Picking up the syntax of a new language in a month is trivial, but unless you know how to do something with it you're doomed to write "Cat" and "Horse" and "Animal" classes forever.
Re: (Score:3, Insightful)
I agree with this... pick a project, dream up some application and build it. If you have something in mind that's great but if not just do something simple like maybe building a tick-tack-toe or checkers game, or building a database application for your DVD collection or something along those lines. It doesn't have to be an app that you'll use but getting your feet wet with a real project is invaluable to the learn
Re:How about the obvious... (Score:4, Informative)
If you can't decide on a project, yet. I'd recommend two books: Java After Hours (perfect for a security guard) and Wicked Cool Java. They're both the same basic format, each chapter exposes you to a new library. Wicked Cool Java covers more ground, Java After Hours is a little more detailed for each project.
Re: (Score:2, Insightful)
Think about what you want to do (Score:2, Interesting)
It may be too early in your education to know what you want to do in your career, but I would start looking in to areas where you can specialize. Client/server architecture will always be a skill that looks good. If you want to go this route, look into learning Java Enterprise Edition. UI design is good to know, but with abundance of WYSIWYG editors that are available now, writing UIs is becoming less of a skill. UI design theory is still pertinent even if the coding skills are going the way of the dodo. S
Re:Do we really want him writing code? (Score:5, Insightful)
I agree with you about the shitty code out there. I simply can't agree with anything else you've wrote.
Why do you assume that only people with Computer Science background should be writing code? Your post also just assume that because he is a security guard, that he just should write code that would never see the light of the day. That's plain stupid you know.
The submitter already told me two thing with his article. First is that he truly loves programming, and second is that he is able to self study any language without the need of a course where he could ask many questions about issues he didn't understood.
That's more than I find in many people with a computer related education. Your computer science background can teatch you important concepts, and the right way to do things. It can be a valuable and important background. It can't teach you how to be creative with your algorithms, and how to be smart enough to write complex programs.
Re: (Score:2)
Schools are aware of this and they do try, but IMHO it just can't be done for real in that setting.
Getting involved in an open source project over a significant period of time is a better way.
Re: (Score:3, Insightful)
Although I get what you're saying, I think it's a bit harsh too. Everyone starts somewhere. Everyone writes crap code when they start. The key thing is, the more you do it, the more you learn, the better you get.
I don't know whether there are any other self-taught coders such as myself who can back this up, but personally I've found that half my learning was done before I even reached university - learning that code isn't about cool routines. It's an operation of keeping things simple, making it so you nee
Re: (Score:2)
I can 100% back you up. I've been coding for over thirty years, in everything from Z80 machine code to C#, written compilers, you name it, and somewhere in those thirty years I took a required semester of Pascal.
Write code. Read other code. Decide if it's good or bad. Take the good, excise the bad, write code and read code. Someone up the chain said, "typing, lots and lots of typing."
Learn algorithms and data structures (I'm a mathematician, I have to say that). Sure, there's libraries to do the scutwork,
Re:Do we really want him writing code? (Score:5, Insightful)
What a load of tosh. So you need a CompSci degree to be a professional coder ?
I've just finished a 9 year employment with a company that was based not on degrees, CVs or other paperworks, but on the basis of a successful 6 week freelance project back in 2000. I should point out I'm completely self taught, no formal training whatsoever.
Coding has nothing to do with language or syntax, but upon having an analytical mind. Breaking down a problem into it's bare elements, and knowing how to make those elements work together is everything. There's plenty of CompSci grads who can parrot off the functions and procedures available in NET or JAVA, but haven't got the first clue how to apply those to the problem at hand.
Re: (Score:3, Interesting)
Did you check their degrees? (Score:2)
I've met plenty of programmers with advanced degrees in Computer Science who couldn't tell me how to implement a linked list,
That's covered in a freshman Data Structures course these days. Where did they get their degree from?
Re: (Score:2)
I think that's why a degree doesn't really mean anything unless they have something else to prove they actually enjoy what they're doing and have don
Re: (Score:2)
Right! Just because you have a degree doesn't mean you magically crap daisies and good code. I've met plenty of programmers with advanced degrees in Computer Science who couldn't tell me how to .
I feel the same way when I'm hiring guys with Microsoft or other certifications. If they can't answer basic questions, I don't hire them. I had one guy claim he knew Server 2000 really well even though he had an MCSE and less than 1 year of experience. I called his bluff by pointing him to a computer that was blue screening on boot and asking him to fix it. This MCSE twit didn't know how to boot in safe mode. For what I needed, I'd much rather have the guy with lots of experience.
Re: (Score:3, Informative)
Any of the above could alone be good enough reasons to use a linked list vs. a hash table, and obviously more than one criterion would make a stronger argument. But this is a very one dimensional discussion; in any of those cases, perhaps an array or an ordered tree would prove more appropriate... each case must be matched to a particular data structure on its own merits.
Re: (Score:2)
Coding has nothing to do with language or syntax, but upon having an analytical mind.
Apparently, English is the same way.
Re: (Score:2, Insightful)
I would say that he is dong his best to rectify exactly the problem you raise. He seems to be well aware that simple knowledge of the language syntax is not enough to qualify to use the language, and is asking how he can rectify his lack of experience. I give kudos to him for being as aware of the problem as this, and more kudos for seeking out a place like /. to learn and to ask the question he has done.
I would say that I am more self taught than academically taught - nearly forty years ago. And I have shi
Re: (Score:3, Insightful)
I'm not trying to be mean or disrespectful to AC, but there a re a lot of pompous assholes which, when asked 'I've learned such-and-such, what next', ramble on about how how totally useless you still are, which is both uninteresting, mean, unhelpful, stupid, and not the question.
I've spent more times listening to castrative bullshit spewed out by people with an ego and idiocy like his than I have having constructive, interesting conversations.
Sure we do (Score:3, Insightful)
Job security my man. Job security.
Have some shop hire in a newb that can't write because they're cheap. Six months later they'll need me. And I'll be able to bill whatever I want.
And on the other side of the coin - maybe he's an ace, a diamond in the rough. A colleague just waiting to be discovered. Not everyone I know who writes great code has a degree. I can think of three people that absolutely blow me out of the water - none with formal degrees.
Re: (Score:2)
I just don't want him to get the idea that because he took a college course and read a couple books that he's a Java programmer ready for the Big Leagues. These are the kind of people who make it hell for those of us who bothered to get a proper Computer Science background, and then spent many additional years learning our craft. Just because somebody can use a saw it doesn't make them a carpenter, and just because somebody can plunge a toilet it doesn't make them a plumber.
Hopefully he won't have to work with a jack ass like you. I know people with a "proper computer science background" that cause grief for people without a proper Cs background and even those with a proper CS background. It doesn't matter how you learn if you don't take it seriously. People who think you're automatically good because you have a degree are one of the biggest problems.
A degree is very much a good way for most people to learn because they're given structure and can be forced into doing things
Re: (Score:2)
That sounds like a fantastic idea.
Dunno why you got modded off-topic for it.
What's next? (Score:5, Insightful)
Real-world programming (Score:2)
Program something for real. Be goal-oriented. No amount of working through exercises teaches you programming for real.
Seconded.
Once one get all the basic and theoretic concepts (tree, lists, classes, whatever), the bast is to start tackling some real-world problems.
Book-wise:
- One might be interested in books which show how some practical problem and real-cases got solved in Java code (Can't point to a good example being not a Java programmer my self, but probably O'Reilly has some interesting books).
- Info about useful classes and libraries might be useful too (because once you start coding your self, you'll eventually ne
Give Scala or Clojure a shot (Score:2)
Or, you know, write some code.
Re: (Score:2)
Definitely write some code. When you are done with that, though, give a look at Common Lisp: http://www.cs.cmu.edu/~dst/LispBook/ [cmu.edu] Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky, or http://www.gigamonkeys.com/book/ [gigamonkeys.com] Practical Common Lisp by Peter Seibel. Then, learn to use Clojure to tie the two (functional programming and JVM bytecode + platform) together.
Implement some of the exact same things in C (Score:5, Interesting)
By implementing a lot of the same things in C you can get a much better feel for what is actually happening underneath the covers.
Re:Implement some of the exact same things in C (Score:5, Insightful)
Re: (Score:2)
Obviously... (Score:5, Funny)
being a night security guard, you should start looking around for all those anonymous objects skulking around the building.
Re: (Score:2)
How does that improve your coding skills?
Priorities, man!
Re:Obviously... (Score:4, Funny)
the wind through the trees
like a quiet jet engine
it says to you: whoosh
Re: (Score:2)
Burma Shave
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Lighten up Francis
Best way to learn: (Score:5, Insightful)
Pick something simple to build (i.e an application) and build it. You'll learn huge amounts just from filling the gaps in your knowledge in order to achieve what you want.
learn something about embedded! (Score:2, Interesting)
Linux journal had a nice introduction article [linuxjournal.com] on embedded programming.
I've been doing embedded development work for the last 20 years, and am still enjoying it. It pays pretty good, and you'll be far less interchangeable with someone else tha
Find an itch and scratch it (Score:2, Interesting)
Projects (Score:2)
Effective Java (Score:5, Informative)
Effective Java [sun.com] by Joshua Bloch. Will give you some deep insights into the workings of the language.
Re: (Score:2, Insightful)
He seems to want reading options (Score:5, Interesting)
I see a lot of posts suggesting that he start writing real programs. That's good advice, but it might not answer the question. The submitter says he works as a security guard. As such, sitting focused at a laptop writing code might not be an option. He seems to just want suggestions for books to read. As such, I reckon a book on algorithms wouldn't be a bad direction to head (provided he's got enough math to follow along).
The only problem I see is that if he's taking these classes for college credit or working toward completing a certificate, he's going to be really bored with the later classes when he actually has to take them if he reads all the books beforehand. Either that, or he'll know enough to be dangerous and he won't pay sufficient attention to the guidance from his instructor.
Re: (Score:2)
Talk to the instructor. If the OP is that far ahead, and the instructor is worth a shit, then s/he will work with the OP to do independent study and more credit.
Re: (Score:2)
I see a lot of posts suggesting that he start writing real programs. That's good advice, but it might not answer the question. The submitter says he works as a security guard. As such, sitting focused at a laptop writing code might not be an option. He seems to just want suggestions for books to read. As such, I reckon a book on algorithms wouldn't be a bad direction to head (provided he's got enough math to follow along).
I can recommend the O'Reilly Java Examples nutshell book (especially if you try to understand why the examples work) and Mark Grand's books on Software Patterns in Java.
After that, well, you're at about the point where your best approach involves getting practice trying to do real things (or at least solving problems somewhere like RosettaCode [rosettacode.org], where many of the problems don't yet have Java solutions). I don't know how well that sort/depth of study mixes with a job as a security guard.
Re: (Score:2)
The submitter says he works as a security guard. As such, sitting focused at a laptop writing code might not be an option.
I recommend writing programs on a legal pad or in a notebook. That's what I did for several years when I didn't have a laptop.
Re: (Score:2, Insightful)
I see a lot of posts suggesting that he start writing real programs. That's good advice, but it might not answer the question. The submitter says he works as a security guard. As such, sitting focused at a laptop writing code might not be an option.
Are you kidding me? It is possible to write programs without a laptop or any computer at all. I used to do it when I was bored in Middle School which was 98% of the time. All you need is your brain, some notebooks, and a bunch of pencils.
First, think about the overall design of the program. Sketch out the general structure using pictures, flowcharts, pseudocode, English, whatever. Figure out the data structures and algorithms needed. "Code" from the top down. When you get to interesting or challenging
Read more, code more (Score:4, Interesting)
Read more if you want, MIT's open courseware is great, donate if you can, i do. they are good refreshers.
There are pretty standard student projects, (like game of life, notepad, msg servers,)
You might want to move into more advanced topics, like javax or concurrent stuff like RMI
Algorithms are great to learn but sadly Ive had little chance to use em in real work, would'nt put too much stock in them for returns.
In any case, any algos you need most likely you will learn on the job, if something slows too much.
They are however fundamental if you want to be a proper engineer.(In my opinion anyway)
If you want real world experience, go look at the freelance websites and just copy down the specs and attempt yourself.
Dont need to bid, but these provide a snapshot of EASY projects in real jobs.
I also have some 100% real world work projects assigned to me if you want to do for free........ just kidding
You've got one third of it (Score:5, Informative)
Good luck, and godspeed.
Re: (Score:3, Interesting)
I actually read halfway though the book skipping the exorcises, figuring they were too easy and I was wast
Re: (Score:2)
Order is wrong. Believe it or not most people would rather eat their own hand than learn algorithms or the standard API by heart. But I do suggest writing real code.... that is not just an exercise, but actually find yourself something someone needs solved and solve it. This way you will quickly pick up what is needed to accomplish the task, which will involve algorithms and API.
I would suggest a more complete treatment of algorithms later in your development when you can begin to appreciate where they fit.
Write programs... (Score:2)
As an instructor, I always tell my students: the only way to become a good programmer is to write programs, more programs, and even more programs.
Make up ideas: write a program to keep track of your music, write a game program, write a program to track recipes. It almost doesn't matter. The important thing is to make the programs a bit challenging. Want to track your music? Store the objects in a file using Java Serialization - a great reason to learn about serialization. If you already know about that, t
Take the Sun Certified Java Programmer Test (Score:2)
If anything, it will prove that you truly know Java syntax. A score of 100% can't hurt.
Re: (Score:2)
The Sun (now Oracle?) Java developer's certificate does show a fair bit of proficiency with the language. You really do need to have more than just a passing familiarity to get it. For me, one of the most challenging parts was things that were technically legal (and would work), but were very far from anything I would call best practice. The second bit was the breadth of the API it covers. I've been doing server side Java since servlets were born, with a heavy concentration the application server/EE sid
You know the syntax... (Score:2)
Learn JEE. Learn some hibernate, learn struts, learn about containers, and servlets, and beans. Learn about JDBC and relational databases. Learn JPA and see how great it is and how crap it is. Then actually do something with it.
Another Language, Design Patterns, Java EE (Score:2)
Is this your first language? I'm a Java developer but I believe all Java developers can benefit from knowing another language. Personally I wish everyone knew a little assembly. I've met Java developers that couldn't keep kilobytes, megabytes, and gigabytes straight because they never learned about the hardware their applications ran on.
Syntax is one thing, designing code is another. There are several design pattern books you might want to look at. There is the Head First Design Patterns book and the tradit
My top 4 (Score:5, Informative)
Re: (Score:2)
Start writing software (Score:2)
The only real way to learn a programming language is to use it in a real project. Come up with something you've always wanted but can't find and make it happen. That's the great thing about programming. You'll learn more doing that than you ever will from a book.
Other Things... (Score:5, Insightful)
My assumption is that at some point you'd like to try to make a living as a Java developer. If that's not the case, please disregard this post.
How much do you know about databases? If the answer is nothing, you'll want to get up to speed on at least basic SQL. Pretty much every Java project you ever work on in the business world will make use of a database. 80-90% of the syntax is pretty standard from database to database, although nearly every professional Java project I've worked on used Oracle.
While not every Java project is a web project, it wouldn't hurt to have a basic understanding of HTML, CSS, and at least one web server commonly used to host JSP such as Tomcat or WebSphere. Even if these pieces don't end up being your job, the basics are helpful.
There are all kinds of popular Java frameworks meant to solve different problems. Try to get a basic sense of what's out there and what each of the leading options is good for, e.g. that something like Hibernate is used for data persistence and something like Java Server Faces is more of a presentation technology. (Or whatever's popular now; I haven't worked a Java project in a few years and I'm starting to get out of date.)
Probably you also should start to learn one or more of the common Java IDEs. Eclipse is near ubiquitous, but you may prefer one of the other options.
Good luck!
Re: (Score:2)
Nearly every programming job out there required database programming. Sure, a lucky few get to bang out libraries, or write games.. but for every one of them there are HUNDREDS of programmers working for private firms writing custom programs which manipulate in-house databases.
Re: (Score:2)
Those are all good points. I'd add:
- Learn to use a version-control system (I'd start with Subversion). This is something you'll need for every project with more than one developer (and it's also handy for solo projects).
- Learn to use Ant. When you're done, learn to use Maven.
Earn some money? (Score:2)
Why not look to a site like rentacoder.com and try to pickup a small project? You can do it to make money or you can simply do it to gain experience writing software for other people. This could be a great way to start building your programming resume if you decide to become a full time java developer after completing school. If you were able to successfully complete a few projects before graduation they'll certainly become interesting talking points on your resume and help to set you a part from the oth
anti-patterns (Score:2, Insightful)
The best stuff to read after you think you've got the basics are anti-patterns which show you what not to do. A lot of that stuff can be quite eye opening to read. One of the best books on that topic is Effective Java by Joshua Bloch. Also, search the web for sites like this one: http://www.odi.ch/prog/design/newbies.php [www.odi.ch]
Also, not a book per se, but if you do write some code it's possible to learn more by analyzing the code with tools like findbugs [sourceforge.net] which will show you a list of things wrong with your code.
One language down. (Score:2)
Find some small projects, and write them in Java. Then do this process again in a few other languages: I suggest JavaScript (bonus points if you do the OO stuff in JavaScript without using classes, and don't worry so much about browser-compatibility), Haskell, and either Lisp or Scheme.
The point here isn't so much to learn these languages for their own sake, though that's a nice bonus. These languages will force you to think about programming in very different ways than Java tends to teach people. This is n
Time to get into 'software engineering'... (Score:2)
...now that you have one of the tools for your toolbox.
As you appear to be realizing, learning a programming language is like having a particular type of hammer. Each computer language you learn is another type of hammer. You don't have to have more than one hammer, but since some hammers are better some types of construction than others - the more hammers you have (within reason) the more flexibility you have in building things.
Congratulations on absorbing some of the aspects of Java, keep shining that h
Java Puzzlers (Score:5, Interesting)
Here's one (Score:2)
Build a JVM [acm.org] in it.
Learn more than the syntax - Think in Java (Score:2)
Design books are good, but I think you may have trouble getting much from them until you go through a few real programs and see what problems can occur that design patterns can address.
One great book if you really want to understand Java at a much deeper level, is Thinking in Java [mindview.net] by Bruce Eckel. It's really a great place to start, to understand how to use the language the way it was meant to be used - and that in turn will make your life easier, sort of like not putting your shoes on the wrong feet even t
READ Code (Score:2)
Grab a piece of open source code that interests you and walk through it. In fact, in contradiction to what some others have posted here, it's better to read other people's code -first- before starting to write it yourself. You'll end up with a much better appreciation for the language and the structure of a program.
You want to look for both 'patterns' in the small ("What does this little chunk of code do?") and structure in the large, e.g. class layout, etc.
Too many people out there produce 'write-only co
Check out the job boards (Score:2)
Seriously, check out the job boards. During your investigation you will see what real skills employers are looking for in a JAVA developer. You'll find all kinds of interesting terms to decipher and while you are decoding those you will be introduced to other supporting technologies that support a JAVA development environment that employers are also interested in. Then you can also learn about those.
You are obviously going to find a lot of great info here in this /. article and you should pay attention to m
Effective Java (Score:2)
Effective Java, Second Edition, by Bloch. This book is quite unique and can save you a lot of journey time as you travel the path from "beginner" to "expert". I wish it had been available when I started. Caution: it can make you grow a beard and mumble about the advantages of respecting the .equals() contract.
SQL (Score:2)
A programmer without sql knowledge is like a fish out of water and not very likely employable. SQL knowledge
and working with databases is a must.
Re: (Score:2)
This. As a practical matter, knowing SQL and database design is about the strongest additional skill you can add.
Solve A Problem (Score:2)
Effective Java (Score:2)
Buy "Effective Java" by Joshua Bloch. Even if you're not quite ready for it yet, read it and make it's rules your own.
Frameworks (Score:2)
Being well-versed in these will up your Java street cred by quite a bit.
Algorithms, Patterns, Refactoring (Score:3, Informative)
If you want to work in the real world, writing software, you're going to have to speak to other engineers about what you are doing at a level of abstraction higher than "for loop" or "switch statement". You'll want to talk about algorithms and even more commonly, patterns. You may already be familiar with "tree" and "linked list" so you're off to a good start. But, in the future, you'll find yourself saying: "This is a visitor", "this is a controller", "this is a command pattern", etc. The current "bible" of these patterns is known as the Gang of Four book:
http://www.amazon.com/Design-Patterns/dp/0201633612 [amazon.com]
That one is a hard read. I understand that a more digestible book is this one:
http://www.amazon.com/Holub/dp/159059388X/ [amazon.com]
Two other routes you will want to go down is that of algorithms, like you already mentioned, and refactoring. Algorithms are the most common next step in College, so it might be wise to do that before patterns and refactoring, but I don't think either is a prerequisite for the other. But, knowing what "Big O notation" is, and understanding why a divide and conquer sort is so fast is helpful in your career.
Finally, refactoring seems to be the hidden art of writing good code. So few programmers really understand how to refactor bad into good. This advanced topic will be what sets you apart from the other engineers you compete with for a job. This one is a good "bible"
http://www.amazon.com/refactoring/dp/0201485672 [amazon.com]
Server Side Java, That's Where The Jobs Are (Score:2)
The vast majority of Java jobs out there are for J2EE/Java EE, which is server side Java.
There are a gazillion Java web frameworks out there. Two of the most popular are JavaServer Faces (JSF) and Struts 1.
Struts is old, it has been around for about 10 years or so. It is not glamorous anymore, but there is so much code written in it that you pretty much cannot avoid working with it.
JSF is Sun's (Oracle's?) attempt to have a standard framework. You may read a lot of hateful posts about JSF, but personally I
Get experience with data structures and algorithms (Score:2)
Because good data structures and their associated algorithms are important, your next step could be to pick up a decent book on them such as Algorithms in Java by Robert Sedgewick. He also has the equivallent books for C and C++.
Start diving down into Java's source (Score:2)
Solve a problem that is interesting to you... (Score:2)
Niris,
I have helped teach several people how to program. What you really need to next is apply what you have learned and solve a problem. Ideally, solve a problem that you know something about. Or solve a problem where you have some subject-matter expertise.
I'm not sure if you actually like being a security guard or not. Maybe you do. Maybe you don't. But you are probably familiar with the subject matter. Write a program that will solve a problem related to the subject matter. Using problems that ar
Design Patterns (Score:2)
I think that in order to make the leap into writing real programs, you need to be able to apply OO to a bunch of common situations, and that's what design patterns are all about.
You can either leap in at the deep end with the Gang of Four's book, 'Design Patterns' or try something a bit more accessible, like Larman's 'Applying UML and Patterns'.
The latter book is what helped me jump out of a severe procedural rut, and finally grasp OO.
Data Structures, Algorithms, and Design Patterns (Score:2)
Data Structures (Score:2)
A quick look through the posts shows a number of people mentioning algorithms which is important, but before you get started you may need a better understanding of the different types of data structures and their efficiencies.
Read the JVM specification and understand it (Score:2)
All too often, Java programmers have no idea what it means to be running within the JVM. They don't understand how the garbage collector works (just that it does, but it doesn't always does it?). They don't understand the differences between the different gc models. There's very little understanding of what the difference is between the various generations in the generational garbage collector, or what the difference is between native heap and vm heap.
Also, understanding how the JIT compiler works, how t
Code practice site (Score:2)
Great you have learned how to script... (Score:2)
First of all, congratulations on taking charge of your life and deciding to learn a new and potentially valuable skill!
Java is a decent place to start, but Java is quite a lot like scripting. You never get down to the hardware, almost everything is done for you. By know you should understand the basics of looping and branching so do yourself a favor and see just how deep the rabbit hole goes.
Now here is what I suggest. Go find an OLD computer someplace, perhaps a 386 or something like that and get a copy
Kernighan and Ritchie next (Score:2)
To understand how much of Java _actually_ works, you have to understand the software it's written. Start with "The C Programming Language" by Kernighan and Ritchie.
When you feel more secure about both languages, and have increased your employability by a factor of 3, I suggest you learn how _not_ to do several of the extremely bad practices common to Java programmers, such as redefining functions of the same name locally, and making the same function name do different things with different capitalization.
Next up is design (Score:2)
As you read these books, come up with a hobby project where you actually implement something.
Basic Algorithms, C and SQL/App Development. (Score:2)
After Learning Java Syntax, What Next?
Hmmm, depends on what your goals are as you pursue your studies. The best thing (usually) is to write code that is sufficiently large and complex. However, that usually only happens at work or when taking classes beyond the 3000-level (assuming a good school and instructors.)
For n your case (studying part-time while working on a non-programming job), there are a few things I would recommend you to pursue (which I would recommend to any full-time or part-time student.). These I recommend based on my Java e
You have learned Java (Score:2)
Now you must unlearn it.
Specifically, you're going to need to learn how to use verbs again [blogspot.com].
Try php. It's got a great function library and you can build webpages quickly and easily.
Introduction to Algorithms (Score:2)
You sound like a quick study. Go buy a copy of "Introduction to Algorithms" by Cormen, Leicerson, and Rivest (yes, *that* Rivest). It's a very, very good book. But, make no mistake, any book on algorithms that is easy is a bad one, and this one, while clear, is difficult because there are some algorithms, some very important ones, that are hard to understand. Pick up a used copy from Amazon.
Ant (Score:3, Interesting)
Two essential books (Score:2)
Effective Java and Java Concurrency in Practice. These are a must have for any serious Java programmer.
Re: (Score:3, Interesting)
Re: (Score:2)