#16 in Computers & technology books
Use arrows to jump to the previous/next product

Reddit mentions of Effective Java (2nd Edition)

Sentiment score: 60
Reddit mentions: 99

We found 99 Reddit mentions of Effective Java (2nd Edition). Here are the top ones.

Effective Java (2nd Edition)
Buying options
View on Amazon.com
or
    Features:
  • Prentice Hall PTR
Specs:
Height11 Inches
Length8.5 Inches
Number of items1
Weight1.42639083514 Pounds
Width0.83 Inches

idea-bulb Interested in what Redditors like? Check out our Shuffle feature

Shuffle: random products popular on Reddit

Found 99 comments on Effective Java (2nd Edition):

u/krabby_patty · 33 pointsr/java

Surprised Effective Java didn't show up

Edit: Did a little digging and I see a Third Edition seems to be under way for Java 7/8

  1. https://twitter.com/joshbloch/status/811983663525085184

  2. https://twitter.com/joshbloch/status/796939556658573312
u/TieDyeJoe · 26 pointsr/java

Get Effective Java by Josh Bloch.

u/jschm · 19 pointsr/compsci

Effective Java by Joshua Bloch is a really good book and definitely worth reading if you're using an object-oriented language, not just Java. It helped me immensely when I was starting out with how to think about my code and my designs.

u/dgonee · 19 pointsr/cscareerquestions

wow. I'm surprised these two aren't listed yet:

Pragmatic Programmer - this one's at the top of my list. I think that every single programmer should read this book.

Effective Java - although it's written for Java there's some great fundamentals in there.

a lot of people also mentioned Clean Code - while some things in there are important, I personally don't agree with everything that Bob writes about

u/AnAirMagic · 19 pointsr/java

By Essential Java, I take it you mean Effective Java, right?

u/gwak · 18 pointsr/java

Does not include Java 8 but https://www.amazon.co.uk/Effective-Java-Second-Joshua-Bloch/dp/0321356683 fits the bill of the Java k&R

u/Ownaginatious · 15 pointsr/java

Read through this entire book before your program anything big.

u/NullEgo · 14 pointsr/AskComputerScience

The biggest hurdles I had motivating myself to work on a project was never coding itself. It was always setting up the compiler, IDE, environment, finding something to work on, etc. The biggest one for me is blank page syndrome.

You don't need to convert to linux if you don't want to but it is good to get some experience in it if you can. I spent sometime setting up a headless Ubuntu server to manage my torrents and be network storage. It took a lot of time starting from scratch but the experience has helped me out.

http://www.ubuntu.com
http://www.reddit.com/r/linuxquestions
http://ubuntuforums.org/

If you want to continue with Java (which is a good choice). I believe the most popular IDE is Eclipse. It has great plugin support and has been used everywhere I've been. You can use it for development on android phones as well if you want to play around with mobile development.

http://www.eclipse.org
http://developer.android.com/tools/sdk/eclipse-adt.html

If your college is like mine, most of the later courses in computer science will not involve much coding at all but will involve a lot of math and knowing popular solutions to common problems (sorting, searching, graph theory, combinatorics). If you feel like you need to brush up on a language, there are a lot of web resources and books to help you.

http://www.codecademy.com
http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683
http://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208/ref=sr_1_2?s=books&ie=UTF8&qid=1382580434&sr=1-2&keywords=head+on+java

Computer science and software development is a broad field which makes scaling it daunting at times. The only way to make it less daunting is to just dive in and do it. Pick a project and work on it. You will encounter problems you have no idea how to solve and that's great because now you've found something you can learn (usually through Google).

Solve problems in manageable bits. If you try to implement your whole program at once it will seem impossible. Implement small portions of your project at a time. Trying to create a Java chat client? Just work on getting some basic sockets to work and build a library you'll be able to use going forward. This will make the goals seem manageable and help you modularize your code. It helped me with not feeling overwhelmed about my project's scope.

I hope I didn't sound condescending. I just wanted to share some things that have helped me. I don't think you are in a bad spot, you just need to stay motivated and find some things to work on to help you learn. If you have any specific questions I can try to help out, but there are other people on this sub that are far more knowledgeable than me.

u/gorset · 10 pointsr/programming

Ok, let's see. A few quick points:

Rooted in in standard, everyday mathematical notation? public static final volatile interface abstract class transient inner class inner anonymous class objects values boxed values..... etc...

Java Generics has drawn heavily from the functional programming camp which is based on lambda calculus. See google tech talk: Faith, Evolution, and Programming Languages

Extremely easy to read and understand? Go read Java Puzzlers and Effective Java to see how many easy mistakes you can make.

Static types enables blablabla...? Not possible without static typing...? Does he realize that tools like Eclipse grew out of a smalltalk project and that smalltalk pioneered automatic refactoring ages ago? Smalltalk is one of the most dynamic language around, and it's more than 30 years old.

Most bugs are found at development time with java? That's not my experience :-)

Simple puzzle: for which values for someInt does this code fail?
int myPositiveInt = Math.abs(someInt);
assert myPositiveInt >= 0;

u/calp · 9 pointsr/java

I think the book people normally recommend for this is Effective Java by Joshua Bloch

u/jbacon · 8 pointsr/java

Since you're already a programmer: Effective Java, 2nd Edition. That's pretty much your definitive Java language and Java best practices reference.

I would not recommend the Head First series - those are more geared to novice programmers. I don't think you'll have much trouble picking up basic object oriented concepts, which is probably the only thing that book might help you with.

For general programming reading, I recommend The Pragmatic Programmer - great read, lots of excellent advice in there.

u/trimatt · 7 pointsr/java

If you want to gain a bit of confidence in writing good Java code i'd start by reading Josh Bloch's Effective Java. It's a fantastic reference manual to have on your desk...

Check it out here

u/b_bellomo · 7 pointsr/learnjava

I don't know what is that book's style but these free programming books/courses will strengthen your knowledge of the basics and introduce you to more complex stuff :

u/chapmbk · 6 pointsr/java

The most important thing when looking for a Java developer job is to actually understand Java. I don't mean knowing how to write code in Java. I mean knowing how the language works. What is the purpose of equals/hashCode, how to make object Immutable, what is the String pool, etc...
You would be surprised how many developers think they understand the language and have no clue how it works.


  1. Read and understand effective java and clean code.
  2. Be familiar with and excited about automated testing. You should aim for 80% - 90% unit test code coverage in your projects.
  3. Be familiar with static code analysis tools. PMD, FindBugs, etc...
  4. Understand the benefits of code reviews. Be familiar with popular code review tools. Crucible, etc...
  5. Have a degree.
  6. Be familiar with current technologies. Show that you research new technologies on your own

    You do not need all these things to get a job. There are plenty of large IT organizations that will just hire lots of people to fill seats and then drop them if they don't work out. However, if you want to get a job at a company that is serious about producing quality code, you need to show that you are serious about being the best developer you can be. Getting a job at an organization like this will not only pay better but you will also have the opportunity to learn from all the highly skilled developers that work there.
u/Zippy54 · 6 pointsr/Android

This is from my own personal experiences. Please, learn Java first, I cannot stress this enough. Knowing Java helps so much with design, I struggled with basic Java knowledge and hated programming for Android; I recommend Effective Java 8th Edition .

Be warned though, it's not very friendly to novice programmers, so I'd make sure you have experience in any 'C' based language beforehand - C++ would be a great help.

I'm really not trying to be a dick here, but you really do need to learn Java to a sufficient level. Do you know: Java Inheritance, Static Functions, Abstract Classes, 'For Each' operator? Mutaor Methods? Trust me, this will all come up in Android and more over, Android uses most of Java's library.

Please, I don't want to sound like a huge Dick, but this is crucial. Let me put this is into a metaphor. Learning the Android API without Java is pretty much suicide (I can't think of any good metaphor(s)).

I hope this helps, Oh and Inbox me on Reddit - I might have a few books for you.

u/SanityInAnarchy · 6 pointsr/learnprogramming

I don't think there is anything you need to cover before the class, if it's a good class. However, I would suggest the following -- not before class, but probably before, during, and after class:

  • If the class goes reasonably well, pick up this book. It's a collection of best practices for Java. You will learn bad habits in class, and this will help. (It's not necessarily the class's fault, it's that Java warps your brain in all the wrong ways.)
  • For Java, learn Eclipse, and learn it well. You may find you prefer other IDEs, but Eclipse is among the most popular, it's open source, and Google builds things on it, like the Android and Dart SDKs.
  • Learn source control. It doesn't matter which you pick up first -- in my opinion, SVN was easier to learn, but Git is the best all around, once you get past the learning curve. And once you learn a distributed VCS like Git, you can use it on class assignments -- which I recommend doing, whether it's required or not. (And always make sure you tell your VCS what to ignore. Like, ignore .class files.)
  • That said, learn to do things without the IDE, so you understand what the IDE is doing for you.
  • Extra credit: Learn other JVM languages, like JRuby, Clojure, or Scala. In particular, learn at least one with a good REPL. This may be confusing, because you're using more than one language at once. But it also helps when you want to explore how a Java library actually works, in real time. I haven't found a good Java interactive shell, which is why I use JRuby's IRB for that.
  • Google any term I used above that you don't understand.
  • My experience with a community college was much worse than my experience with a university. If a university isn't practical, I understand... If it fails you -- that is, if you find yourself asking the professor questions that they can't answer, or if their answers don't make sense, don't be afraid to come back here or to StackOverflow.
  • If the in-class projects aren't big enough, start one out of class! Practice is what makes you a better programmer and better with the language, and the best way to practice is to give yourself a project that you're actually interested in. Work your way up from Hello World, but if you find yourself not wanting to practice, you probably need an exciting project.
  • Don't stop with Java. Learn other languages, learn other ideas. That said, when you find something you're really into, specialize and master it -- but you'll still always need to be stepping outside of that. Keep in mind that your skills in all likelihood will become obsolete. You don't need to chase every programming fad, but you do need to stay on top of the pulse of the programming community.
u/MassiveFlatulence · 6 pointsr/java

Since you're experienced, the best way to learn Java is to start coding in it. Create a simple blog in Java using basic servlet + JSP hosted in Tomcat + JDBC connection to some free database (Postgresql / H2). You will find issues along the way which you can Google around. The best thing about Java is that most questions already answered in StackOverflow. After you've done with it, go and read Effective Java then refactor your project to follow the best practice mentioned in the book. After that you can try to learn more libraries / framework eg. create a new reporting system and communicate the blog with the reporting system through JMS. Adding dependency injection using Spring and many more.

u/UnspeakableEvil · 5 pointsr/java

Effective Java by Joshua Bloch.

u/kurogashi · 5 pointsr/programming
Have a look at Effective Java by Joshua Bloch - Each chapter in the book consists of several “items” presented in the form of a short, standalone essay that provides specific advice, insight into Java platform subtleties, and outstanding code examples. The comprehensive descriptions and explanations for each item illuminate what to do, what not to do, and why.

:edit:: wrote Essential instead of Effective
u/bubsyouruncle · 5 pointsr/learnprogramming

I would highly recommend reading Effective Java if you want some more advanced java topics.

u/morihacky · 5 pointsr/androiddev
  1. storing activity references beyond their lifecycle:
    http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/
    http://www.androiddesignpatterns.com/2013/04/activitys-threads-memory-leaks.html

  2. Using Hashmaps when SparseArrayMaps would have sufficed
  3. This is a heated topic, but using enums is apparently costlier than simple static final variables

    Less specific resources:

  4. See the android developer performance tips page.
  5. While the OP asked for Android specific ones, it's important to know the Java related operations too and for that one only has to look at Effective Java - Joshua Bloch - possibly the best book on Java tips.

    I vehemently disagree with the internal/getter/setter rules mentioned in android developer tips page. I personally use proguard and don't think twice about virtual setters etc. since they most definitely help with clarity
u/sh0rug0ru · 5 pointsr/java

Read lots of code and read books to get multiple viewpoints. This is a deep topic which will require more than superficial online reading.

Check this out.

Books I have found useful:

u/bjarneh · 5 pointsr/java

this book is often mentioned among the best programming books ever written; together with Larry Wall's (Camel) Perl book, and Dennis Richie's C book.

Effective Java

http://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/ref=sr_1_1?ie=UTF8&qid=1314549239&sr=8-1

u/bcguitar33 · 4 pointsr/learnprogramming

If you're into java, I can't help but recommend Effective Java

This book is what took me from Java beginner to closer to Expert. It's full of best practices, tips, tricks, and guidelines. I try to re-read it once a year. Sorry if my praise sounds hyperbolic but it's the truth.

u/CSMastermind · 4 pointsr/learnprogramming

I've posted this before but I'll repost it here:

Now in terms of the question that you ask in the title - this is what I recommend:

Job Interview Prep


  1. Cracking the Coding Interview: 189 Programming Questions and Solutions
  2. Programming Interviews Exposed: Coding Your Way Through the Interview
  3. Introduction to Algorithms
  4. The Algorithm Design Manual
  5. Effective Java
  6. Concurrent Programming in Java™: Design Principles and Pattern
  7. Modern Operating Systems
  8. Programming Pearls
  9. Discrete Mathematics for Computer Scientists

    Junior Software Engineer Reading List


    Read This First


  10. Pragmatic Thinking and Learning: Refactor Your Wetware

    Fundementals


  11. Code Complete: A Practical Handbook of Software Construction
  12. Software Estimation: Demystifying the Black Art
  13. Software Engineering: A Practitioner's Approach
  14. Refactoring: Improving the Design of Existing Code
  15. Coder to Developer: Tools and Strategies for Delivering Your Software
  16. Perfect Software: And Other Illusions about Testing
  17. Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application

    Understanding Professional Software Environments


  18. Agile Software Development: The Cooperative Game
  19. Software Project Survival Guide
  20. The Best Software Writing I: Selected and Introduced by Joel Spolsky
  21. Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams
  22. Rapid Development: Taming Wild Software Schedules
  23. Peopleware: Productive Projects and Teams

    Mentality


  24. Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency
  25. Against Method
  26. The Passionate Programmer: Creating a Remarkable Career in Software Development

    History


  27. The Mythical Man-Month: Essays on Software Engineering
  28. Computing Calamities: Lessons Learned from Products, Projects, and Companies That Failed
  29. The Deadline: A Novel About Project Management

    Mid Level Software Engineer Reading List


    Read This First


  30. Personal Development for Smart People: The Conscious Pursuit of Personal Growth

    Fundementals


  31. The Clean Coder: A Code of Conduct for Professional Programmers
  32. Clean Code: A Handbook of Agile Software Craftsmanship
  33. Solid Code
  34. Code Craft: The Practice of Writing Excellent Code
  35. Software Craftsmanship: The New Imperative
  36. Writing Solid Code

    Software Design


  37. Head First Design Patterns: A Brain-Friendly Guide
  38. Design Patterns: Elements of Reusable Object-Oriented Software
  39. Domain-Driven Design: Tackling Complexity in the Heart of Software
  40. Domain-Driven Design Distilled
  41. Design Patterns Explained: A New Perspective on Object-Oriented Design
  42. Design Patterns in C# - Even though this is specific to C# the pattern can be used in any OO language.
  43. Refactoring to Patterns

    Software Engineering Skill Sets


  44. Building Microservices: Designing Fine-Grained Systems
  45. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
  46. NoEstimates: How To Measure Project Progress Without Estimating
  47. Object-Oriented Software Construction
  48. The Art of Software Testing
  49. Release It!: Design and Deploy Production-Ready Software
  50. Working Effectively with Legacy Code
  51. Test Driven Development: By Example

    Databases


  52. Database System Concepts
  53. Database Management Systems
  54. Foundation for Object / Relational Databases: The Third Manifesto
  55. Refactoring Databases: Evolutionary Database Design
  56. Data Access Patterns: Database Interactions in Object-Oriented Applications

    User Experience


  57. Don't Make Me Think: A Common Sense Approach to Web Usability
  58. The Design of Everyday Things
  59. Programming Collective Intelligence: Building Smart Web 2.0 Applications
  60. User Interface Design for Programmers
  61. GUI Bloopers 2.0: Common User Interface Design Don'ts and Dos

    Mentality


  62. The Productive Programmer
  63. Extreme Programming Explained: Embrace Change
  64. Coders at Work: Reflections on the Craft of Programming
  65. Facts and Fallacies of Software Engineering

    History


  66. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software
  67. New Turning Omnibus: 66 Excursions in Computer Science
  68. Hacker's Delight
  69. The Alchemist
  70. Masterminds of Programming: Conversations with the Creators of Major Programming Languages
  71. The Information: A History, A Theory, A Flood

    Specialist Skills


    In spite of the fact that many of these won't apply to your specific job I still recommend reading them for the insight, they'll give you into programming language and technology design.

  72. Peter Norton's Assembly Language Book for the IBM PC
  73. Expert C Programming: Deep C Secrets
  74. Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming
  75. The C++ Programming Language
  76. Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  77. More Effective C++: 35 New Ways to Improve Your Programs and Designs
  78. More Effective C#: 50 Specific Ways to Improve Your C#
  79. CLR via C#
  80. Mr. Bunny's Big Cup o' Java
  81. Thinking in Java
  82. JUnit in Action
  83. Functional Programming in Scala
  84. The Art of Prolog: Advanced Programming Techniques
  85. The Craft of Prolog
  86. Programming Perl: Unmatched Power for Text Processing and Scripting
  87. Dive into Python 3
  88. why's (poignant) guide to Ruby
u/th3byrdm4n · 4 pointsr/learnprogramming

Pick up Effective Java on Amazon. It's the next step beyond the basics that teaches some really solid, fundamentals.

Once you have that under your belt, just have an idea and execute it to the best of your ability.

Then execute the next idea.

Then the next.

Then the next.

....

There's no shortcuts, just code your ass off. Learn by doing. If you want to make an app that you can use on your phone, pick up a book to do android (I assume) development (or just go through the public Android docs).

If you want to be able to use your app anywhere, grab a book for web development -- Everything is moving to Native Web, so I think that's the move towards longevity..

u/thief_garet · 4 pointsr/java

I just resently started a carreer as a Java Developer myself (m/22), so I can remember the things I had a hard time with like it was yesterday.

What I had the most trouble with, carreer wise, is the configuration of a lot of frameworks. Java in itself is relatively easy (especially since you already are an experienced developer), it's the frameworks that require the most time to learn. A lot of them require a certain amount of configuration, mostly in XML. Learning how to set them up was mostly trial and error in my case. Like someone else said in the comments, pet projects are the best way to learn this. So, to answer your question about what I hate about Java: this configuring is it. Stuff like that is easier in, say, C#. However, if you join an already existing project, the configuration is already done most of the time (although not always very good).

Now for the resources. I really did a bad job with Java in my first year of college, but this guy really helped me with his tutorials (I got 100% percent when I took the exam again): [The New Boston] (https://www.youtube.com/playlist?list=PLFE2CE09D83EE3E28). I linked you the beginner tutorials, but he also has intermediate. [Effective Java] (http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683) is also a good resource, like mentioned in the comments. Another one I like is [The Well-Grounded Java Developer] (http://www.manning.com/evans/). It is a really balanced book, talking about important things like Threading, the JVM, Dependency Injection, Continuous integration etc.

I would suggest you first do some little projects to get a feeling with Java as a language, and then stepping over to frameworks like Spring and hibernate. Check the differences between Spring and Java EE, read about dependency injection (Martin Fowler has a great article about this), etc.

This turned out longer than I expected, so I'll leave it at this. If you still have questions, feel free to PM me or leave a comment.

u/3m0rtal · 3 pointsr/ireland

Yes I agree. I'll have to take a look at that animation again. Its quite difficult as I'm using a list view. Book wise, for Java, I cannot recommend this highly enough,Effective Java: Second Edition, http://www.amazon.co.uk/gp/product/0321356683?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00. For Android its an ever evolving environment so books tend to go out of date very fast. I'd recommend doing a udemy or udacity course

u/lbkulinski · 3 pointsr/java

From Data Classes and Sealed Types for Java:

>Digression -- enums
>
>If the problem is that we're modeling something simple with something overly general, simplification is going to come from constraint; by letting go of some degrees of freedom, we hope to be freed of the obligation to specify everything explicitly.
>
>The enum facility, added in Java 5, is an excellent example of such a tradeoff. The type-safe enum pattern was well understood, and easy to express (albeit verbosely), prior to Java 5 (see Effective Java, 1st Edition, item 21.) The initial motivation to add enums to the language might have been irritation at the boilerplate required for this idiom, but the real benefit is semantic.
>
>The key simplification of enums was to constrain the lifecycle of their instances -- enum constants are singletons, and instantiation is managed by the runtime. By baking singleton-awareness into the language model, the compiler can safely and correctly generate the boilerplate needed for the type-safe enum pattern. And because enums started with a semantic goal, rather than a syntactic one, it was possible for enums to interact positively with other features, such as the ability to switch on enums, or to get comparison and safe serialization for free.
>
>Perhaps surprisingly, enums delivered their syntactic and semantic benefits without requiring us to give up most other degrees of freedom that classes enjoy; Java's enums are not mere enumerations of integers, as they are in many other languages, but instead are full-fledged classes (with some restrictions.)
>
>If we are looking to replicate the success of this approach with data classes, our first question should be: what constraints will give us the semantic and syntactic benefits we want, and, are we willing to accept these constraints?

u/zoqfotpik · 3 pointsr/java

If you're already past all the "learning java" type books, read this:

Effective Java: http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683


u/thakk0 · 3 pointsr/java

It depends, honestly. There is some discussion about this in Effective Java if you haven't read it.

I'll summarize some of what Josh Bloch says on the topic here:

> If a class is accessible outside its package, provide accessor methods...If a class is package-private or is a private nested class, there is nothing inherently wrong with exposing its data fields

For example --

public enum Planets
{
MERCURY(1), VENUS(2), EARTH(3), MARS(4), JUPITER(5), SATURN(6), NEPTUNE(7), URANUS(8)
private double _rateOfSpin;
public Planets( double rateOfSpin ) { _rateOfSpin = rateOfSpin; }
public rateOfSpin() { return _rateOfSpin; }
}

If you use rateOfSpin(), you have the option of making this a derived value without introducing a breaking change. For the cost of an additional "() -- you get some flexibility. If your enum is private or package-private, you can eschew the accessor with minimal risk.

Hope this was helpful.

u/nutrecht · 3 pointsr/java

> As such, the commission a team of 2 people to remake the tool in C++ and QT. Well that was started last January. 8 months later and they aren't even close to being done. I'd wager at this rate they have another 2 or 4 more months. The silly thing, is my program in java was 3 files with maybe 400 lines of code.

You are at a company with very junior people. Unfortunately it's juniors who fell into the expert beginner trap and feel they already know everything. It's common for people like this to shit on other programming languages. Actual experienced devs know they are just tools and pick the right tool for the job.

Regarding your questions; I for now would recommend to not focus too much on the framework (both Java EE and Spring are fine, and learning one means you're also learning pretty much 80% of the other anyway) and focus on your core Java skills first and foremost. You already have experience so you will probably blow trough something like this mooc really fast. Other than that books like effective Java and clean code are great books to have read for a professional Java dev.

When it comes to starting with either Java EE or Spring; pick the one you prefer. I'm personally quite fond of Spring Boot because it is quicker to get started with and still has all batteries included, but if you prefer Java EE it's fine too.

P.s. like others said; it's not been called J2EE for a long time. Some vacancies do write it this way but that's generally a sign the company hasn't gone with the times.

u/zachncst · 3 pointsr/cscareerquestions

Resources to help: Effective Java 2nd Edition by Joshua Bloch http://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/ref=la_B001CDCVUG_1_1?s=books&ie=UTF8&qid=1449594086&sr=1-1

Basically this entire book has most of the intricacies of Java boiled down. If you can commit this book to memory than most Java interviews will be killed.

Java 8 is definitely a new take on the language but most shops haven't gotten to it yet so knowing Java 7 is pretty much all you need.

u/fabio1618 · 3 pointsr/ItalyInformatica

Questo è un classico anche se un po' datato: https://www.amazon.it/Effective-Java-Joshua-Bloch/dp/0321356683

Ti consiglio di abbinarlo a https://www.amazon.it/Java-Action-Lambdas-functional-style-programming/dp/1617291994 per le ultime novità di java 8 (che sono fondamentali).
Sono in inglese e te ne devi fare una ragione... il 99% del materiale di qualità è in inglese.

P.S. Nè html nè css sono "linguaggi"

u/ewiethoff · 3 pointsr/learnprogramming

I learned Java in the late 1990s from the first edition of Learning Java and also some of the official online tutorials. I just fooled around with it a short bit. I relearned Java some years later from Head First Design Patterns and Effective Java. The Patterns and Effective books really help you design your classes. Ps: I know nothing about Android programming.

u/beltedgalaxy · 3 pointsr/java

They did talk about some good, solid practices for Java, that really don't go out of relevance.
If you have a solid base of Java, much of what they talked about can also be found in a more cohesive format in Josh Bloch's amazing book "Effective Java" . even though this book was last published in 2008, the content is as relevant as ever, as it discusses foundational best practices.

u/thehollyhopdrive · 3 pointsr/java

Two Java specific books you should read cover to cover (and keep around as an effective reference) are Effective Java and Java Concurrency in Practice, and you should also seriously consider reading Design Patterns. The examples in it aren't written in Java but they hold for all OO languages.

u/t-rek · 3 pointsr/learnprogramming

Java

I heard that Effective Java is really good if you knew the basics (you should try to read into it a bit tough, as it isn't follow a classic tutorial format, but contains best practices and "recipes".

Then again you cold try some general programming books like:
Code Complete
Design Patterns(check the Head First edition too)
Refactoring
some books about analysis and design

Web

I've just read about a really good tutorial site of Mozilla on reddit. I will look it up in a minute

EDIT: here

u/SofaAssassin · 3 pointsr/cscareerquestions

You probably won't need to do anything until you actually start working, because you don't know what the tech stack of your company looks like yet.

For me, the generic Java-centric books that I think every Java developer should read are the following. They are the only Java books I did not end up burning/shredding:

  • Java Concurrency in Practice - Written by Brian Goetz, who architected and implemented large portions of the java.util.concurrent API that was introduced in Java 5, which makes writing concurrent code easier depending on your use cases.

  • Effective Java- Written by Joshua Bloch, who implemented major portions of the Java API. This is a lot of best practices for Java which are still applicable today (the book is 6 years old).

    Beyond either of those, though, I really wouldn't care about any other dead tree Java book. You'll probably spend significantly more time learning internal libraries and 3rd party stuff like Spring or Guice or Apache Commons or whatever your company uses.
u/rosenasty_ · 3 pointsr/androiddev

I've done Android for 5-6 years. It put me through college, got me a job after. It pays well, but I'm moving to another development position because I can't envision a career in android development. Keep your career goals in mind. They may be radically different from mine, and that's fine, but know them.

As for coding: Effective Java Dat gud shit. A little dated, but it's unlikely to steer you wrong. Android lags behind the latest Java versions. Android will get Java 8 Java 9 when the sun is dead.

Androiddev Protip: Don't be afraid of reading the Android source code when you're trying to understand something. I'm a veteran, and I do it probably every other day. The internet is full of lies.

EDIT: fistshake @ /u/little_z for torpedoing my genius witticism

u/cannibalbob · 3 pointsr/cscareerquestions

The feedback about "jargon for development" can be solved by going through some books cover to cover, making sure you understand the theory, and implementing the exercises. I understand that feedback to mean that the person who gave the feedback believes there is too high a chance you will inflict damage on the codebase by making decisions not grounded in solid theory.

Examples of titles that are classics and widely known:
Algorithms (4th Edition): https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X (there is an accompanying coursera course).

Code Complete: https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?s=books&ie=UTF8&qid=1469249272&sr=1-1&keywords=code+complete

Clean Code: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?s=books&ie=UTF8&qid=1469249283&sr=1-1&keywords=clean+code

Functional Programming in Scala: https://www.amazon.com/Functional-Programming-Scala-Paul-Chiusano/dp/1617290653/ref=sr_1_2?s=books&ie=UTF8&qid=1469249345&sr=1-2&keywords=scala

Learning Python: https://www.amazon.com/Learning-Python-5th-Mark-Lutz/dp/1449355730/ref=sr_1_1?s=books&ie=UTF8&qid=1469249357&sr=1-1&keywords=learning+python

Effective Java: https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/ref=sr_1_5?s=books&ie=UTF8&qid=1469249369&sr=1-5&keywords=java

Haskell Programming From First Principles: http://haskellbook.com/

I included multiple languages as well as language-agnostic ones. Functional programming is the near-to-medium term future of software engineering, and most languages converging towards that as they add functional features.

I don't think bootcamp is required. Learning how to learn is the most important thing. If you get into these books, lose track of time, and feel "aha! that's how these things that I previously thought were unrelated are actually the same thing!", and are able to keep it up for weeks, then that is a good sign that you can get to where you want to be.

u/nekochanwork · 3 pointsr/learnprogramming

> Is there a true singular source to learn Java?

Unfortunately, no. There are 1000s of places to learn Java. The right choice is dependent on your skill level and what you want to build (e.g. web apps, mobile apps, desktop sevices, etc.).

If you need some recommendations, start with The Java Tutorials on Oracle, followed by Effective Java.

If you need a comprehensive overview of the language, you can use Java: The Complete Reference 9th Edition.

u/sunlollyking · 2 pointsr/javahelp

Joshua Bloch's essential Java is pretty widely available http://www.amazon.co.uk/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

Its still considered the go to book when talking about concurrency and multithreading, i read it in University and found it a bit heavy going but it is highly insightful and Bloch is very knowledgeable on the subject.

u/edbrannin · 2 pointsr/cscareerquestions

A few suggestions for you:

  1. Buy and read Effective Java, 2nd Edition. It's a fantastic book on good patterns & habits to use with Java, written by one of the language's authors.
  2. Strongly consider using Maven, Gradle or something else that can pull Maven dependencies as your build system. It's so much nicer than keeping a bunch of jars around, and can make it much easier to reuse any libraries in your portfolio.
  3. If you have a server-ish pc at home, try setting up a Jenkins server on it to automatically build & test the projects in your GitHub account.
  4. When your applications start getting bigger, check out the Spring Framework. Especially the JDBC stuff when you start using a database, and Spring MVC is hands-down my favorite way to write a web API (it's the closest to Flask/Rails I could find for Java).
u/denialerror · 2 pointsr/learnprogramming

Do some reading for a start. If you haven't already Effective Java and Java Puzzlers are IMO the perfect way to get into the finer complexities of the language.

Find something you don't understand and want to know more about, then find a book on it and read. If you don't find yourself getting anything from a book, practice what you already know and learn by doing instead by making something.

Also, if your employer is so inclined, see if they are willing to pay for you to go on some training. Even if they don't advertise a training budget, more companies than you think are are happy to fund their employees' learning.

u/haakon · 2 pointsr/java

In your example, the first argument is not needed:

public static int sum(int... numbers) {
int sum = 0;
for (int i : numbers) {
sum += i;
}
return sum;
}

"Tricks" like these are just part of the language, so to learn them, read a relevant book I guess. To learn more idiomatics and best practices, I'd recommend Effective Java

u/zenon · 2 pointsr/programming

Effective Java is necessary if you work with Java.

u/ekchang · 2 pointsr/androiddev

Beyond just Android resources, you're going to want to pick up a copy of Effective Java, which is the bible for Java development. It's also a very easy book to read; I say this as someone who has never completed a single "read x textbook pages" assignment in school because textbooks are awful. One of the things I look for in a developer is a strong Java foundation, more so than knowing the Android-specific nuances.

u/MrPhi · 2 pointsr/InternetIsBeautiful

I usually look for the community pages of stackoverflow on the topic.
For example, to learn more about C++ I have been searching for something like "C++ book stackoverflow" and found this page. 4K upvotes, 27 revisions, 23 contributors, last edited in December 2015. Definitely a reliable source.

There does not seem to be any post about Java books on stackoverflow except for this more generalist one, that looks reliable but not updated since 2013.

This last post suggests Head First Java by Kathy Sierra.

I have heard that Effective Java by Joshua Bloch is a very good book for intermediate Java programmers, and the author in the first pages suggests The Java Programming Language by Ken Arnold as an introduction to Java. This last one is also listed on the stackoverflow answer, I would probably go for that one.

u/oorza · 2 pointsr/javahelp

Read, in this order:

  1. Thinking In Java.

  2. Effective Java

  3. Java Concurrency in Practice

    Those three books should get you wherever you need to be, without getting more specific books (e.g. framework books).
u/Chomskyismyhero · 2 pointsr/learnprogramming

Head First Java

Thinking in Java

Effective Java

Java Concurrency in Practice

Best $150 you'll ever spend. Read in order listed.

u/jj2parkie · 2 pointsr/manga

Probably. It might take some refractoring, but you would need a SaaS like Parse to handle the cross platform sync. I never tried Parse, but I don't want to since it costs money after a certain quota. I've heard some horror stories of independent developers messing up their Parse and blowing through their quota as they failed to put a kill-switch.

Same. I started this project around November to learn Android development. I have a year off before I start college, so I thought of learning some software development. My only experience at the time was high school computer science using C#, so even if you are learning you can contribute. :) Even if it's intimidating you can contribute by submitting issues and such. I contributed to a small database library which was over my head, but I browsed the source to find out how to do something, found an typo in the SQL, and submitted an issue explaining the problem and how to fix it: he forgot a letter.

Although I started learning programming in 2014, if you need any advice on learning Android development, you can PM me. I can provide a list of books you can find online which are helpful for learning Java:

  • Effective Java

  • Advanced Topics in Java

  • Clean Code

  • Design Patterns


    All these books are sectioned such that you only need to read parts you want to, so they are very good references. These books really helped in knowing the syntax of a language and knowing how to use the language which I found was very important for a project of this scale. My first version of it was so hacked together that it was impossible to refractor to add new features. These books really helped for the second version even though I couldn't apply what the books advised effectively.
u/Tovxc · 2 pointsr/AskReddit

If you're looking to get into programming, Java is a good starting language. It's relatively easy to pick up and does a lot of things for you that C++ doesn't. A good book to start learning with is Java Software Solutions by Lewis and Loftus. Another book for a little more theoretical and advanced learning is Effectiv Java by Joshua Bloch.

Edit: Book links

Java Software Solutions: http://www.amazon.com/gp/product/0132760770/ref=pd_lpo_k2_dp_sr_1?pf_rd_p=1535523722&pf_rd_s=lpo-top-stripe-1&pf_rd_t=201&pf_rd_i=0321465881&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=07GGH53RVK0D4GZY11KX

Effective Java: http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

u/Xartorx · 2 pointsr/politota

После java можно как-раз.
По java советую Thinking in Java и Effective Java и в довесок.

u/valbaca · 2 pointsr/cscareerquestions

These are books I actually own and would recommend. Of course there are other great/better books out there, but I'm going to stick with what I've actually bought and read or "read".

I say "read" because several books are NOT meant to be read cover-to-cover. These typically have about 1/3 that you should read like normal, and then skim the rest and know what's in the rest so that you can quickly reference it. These books are no less important, and often even more important. I've marked these kind of books as #ref for "read for reference". Normal books that should be read cover-to-cover are marked #read


For learning your first language: This is really the hardest part and unfortunately I don't have any books here I can vouch for. I started with "C++ for Dummies" and am not including a link because it's bad. Your best bet is probably "Learning <language>" by Oreily. I also love the Oreily pocket books because you can carry them and skim while on the bus or the john, but you can just do the same with your smartphone. Pocket Python, Pocket Java, Pocket C++

Top Recommendations:

Accelerated C++ #read Made for people who already know another language and want to pickup C++. Also great for people who need a refresher on C++. I really like how it doesn't start with OOP but gets you familiar with the imperative parts of C++ before diving into OOP.

The Algorithm Design Manual #ref This is my new favorite book and the first I would send back in time to myself if I could. Each algorithm & data structure is given a mathematical breakdown, pseudocode, implementation in very readable C, a picture (very helpful), and an interesting war story of how it Saved The Day.


Cracking the Coding Interview #read I originally avoided this book like the plague because it represented everything I hate about coding interviews, but many interviewers pull questions straight from this book so this book can equal getting a job. Put that way, it's ROI is insane.

The Pragmatic Programmer #read Must-have for any profressional software engineer that covers best-practices for code and your growth. You can also find the raw tips list here

Head First Design Patterns #read Many prefer the "GoF/Gang of Four" Design Patterns which is more iconic, but Head First is a modern-version using Java to cover actual design patterns used day-to-day by programmers.

For Intermediates:

Effective Java or Effective C++ and Effective Modern C++ #read When you're ready to go deep into one language, these books will give you a huge boost to writing good Java and C++.

Design Patterns #ref You'll want to get this at some point, but early on it's too much for a beginner and many of the patterns are obsolete.

The Art of Computer Programming #ref The programming "bible" but like Design Patterns you should hold off on this iconic book until you've got your basics covered. It would make for a great purchase with your first paycheck or first promotion :)

u/somekindofsorcery · 2 pointsr/compsci

Tips and pointers for writing good Java code
http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

Algorithms in Java with code examples
http://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/ref=sr_1_1?s=books&ie=UTF8&qid=1416453105&sr=1-1&keywords=algorithms

For mobile development, check out the Big Nerd Ranch books. They contain guided projects that help you learn a variety of core features of mobile programming.

u/cjt09 · 2 pointsr/learnprogramming

> Sometimes I believe that most books are wastes of paper, because everything relating to programming can be found online.

Although this is true, the problem with online resources is that they tend to be inconsistent. They assume different competency levels, assume familiarity with different concepts, approach problems in different methods, etc. This isn't much of an issue for a veteran programmer, but I think a solid book is great for beginners. Here are two good choices.

u/melancholiclabs · 2 pointsr/Drugs

Read a lot of books. Everything is usually available as a pdf on the internet and the ones that aren't are $10 to rent on Amazon. Here's the ones that I've read that relate to this project.

Java

u/fredisa4letterword · 2 pointsr/learnprogramming

First of all, singleton is not really a good pattern to use; many (including myself) consider it to be an anti-pattern because it's just a synonym for global state, which generally makes programs difficult to understand and test.

There are common patterns... the most common reference would probably be https://en.wikipedia.org/wiki/Design_Patterns .

I also really strongly recommend all Java programmers to read https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683

It's more Java specific and covers a lot of pitfalls in the Java language and libraries. It's a very interesting read that comes from a guy who designed a lot of the Java standard libraries and learned firsthand problems with the language.

u/kanak · 2 pointsr/AskReddit

Depends on your experience. If you haven't programmed before, I think Big Java would be a good book to start with (it's the book MIT's Civil Engineering Dept uses to get them up to speed with Java). If you've programmed before, you're better off doing the official java tutorials followed by Core Java 1 and Core Java 2.

Regardless of the path you take, if you intend to do ANY kind of "serious" java programming, Effective Java is a must-read.

Finally, you'll want a good reference book. Gosling's Java Book is the definitive one, although you might prefer a book by O'Reilly.

u/SkyMarshal · 2 pointsr/learnprogramming

Do you not have the course textbook? Does it not explain well? If not, I suggest two other books instead of something online:

Program Development in Java

Effective Java, 2nd Ed

Both available for Kindle reader, so you can download and start reading immediately no matter what platform you use.

Books > blogs or reddit posts for explaining broad questions like this.

u/doclight · 2 pointsr/java

If static were an evil modifier, I'm pretty confident it wouldn't have been added to the language.

> no.

Static constant values allow the compiler to compute anything solely dependent on them at compile time, instead of at run time. Like say for example:

public static final double E_TOTEN = Math.pow(Math.E, 10);

> So singleton instead of static is somehow magically ok now? It's the same damn thing @
@

Would you prefer if I used the word enum?

> I have no idea what your example is demonstrating.

It wasn't an example, it was a question. Which one provides better encapsulation? A method that has access to every member variable in the class, when the necessary values are provided through public accessor methods, or a static method that uses the public accessor methods.

If you're really serious about coding in Java, I recommend you check out Josh Bloch's Effective Java.

u/powder-keg · 2 pointsr/ruby

I'm looking for something similar - not so much a 'learn ruby' book as a more technical 'best practices' type of book - something more in line with Effective Java or the Effective C++ series.

u/Loomax · 1 pointr/learnprogramming

You should consider using an enum for your planets. The following enum is expandable without having to change any more code than a switch or if-else statement. Even the planet multiplier could be incorporated into the enum so that you wouldn't even have to use the extra method.
Read chapter 6 - item 30 of Effective Java. That example actually uses planets for enums too. Example usage of the following enum (replacing line 37):

Planet planet = Planet.getPlanetBySelection(keyboard.nextInt());
if (planet == null) {
System.out.println("There is no known planet for that input");
} else {
System.out.println("Okay, so your weight would be " + weight*planets(planet) + " on " + planet.toString());
}

This would also require to update your planets-method:

double planets(Planet planet) {
if (Planet.VENUS.equals(planet)) return 0.78;
// and so on. rather use a switch statement there tho
}


And finally the Planet enum:

public enum Planet {
// Expand with more planets with a unique int-value at your will
VENUS(1), MARS(2), JUPITER(3);

private final int selection;

private Planet(final int selection) {
this.selection = selection;
}

/**

  • Get a Planet by the assigned value

  • @param selection corresponding value for a planet
  • @return matching Planet or null if no planet with that value exists
    */
    public static Planet getPlanetBySelection(final int selection) {
    Planet planet = null;
    // Iterate over all known Enum values
    for (Planet p : values()) {
    if (planet.selection == selection) {
    planet = p;
    break;
    }
    }
    // null check to see if that planet exists
    // alternatively throw an exception
    return planet;
    }
    }
u/glhanes · 1 pointr/learnprogramming

In addition to going out and actually getting your hands dirty as others have suggested, make sure that when you're doing it, you're using the best design principles you can muster.

Also, do some reading! There are lots of good books out there that can help you learn common conventions and good design principles.

I'm going through Effective C++ right now, and I've learned more about how to write C++ in the first quarter of the book than I had in the previous 2 years of my life.

Effective Java is a good source, too, but obviously it's going to depend on which framework and languages you're using. Either way, though, you'll learn a lot of essential concepts for how to write maintainable code and prevent common design mistakes.

Also, if you're planning on writing a lot of Object Oriented code, read up on Object Oriented Design Principles/Patterns. Even if you never use them, other people will. If you start working in bigger codebases, you'll see them in action, and it'll make learning the code a whole lot easier if you're familiar with the patterns they're using.

u/IJP · 1 pointr/learnprogramming

Have a look at the book Effective Java. Maybe not exactly what you are looking for, but I think you would find it very useful.

u/sonay · 1 pointr/linux

If you want to program in Java, I would also suggest IntelliJ Idea. Community edition^[1] is free. Oracle docs are fine^[2], javadocs^[3] are great and the source is free for OpenJDK and if you want to go pro I highly recommend Effective Java^[4] by Joshua Bloch. There is also Findbugs^[5] which is cool for static analysis and most of the popular IDEs have plugins for it. You should also check Concurrency In Practice^[6] for multithreaded programming. If you are into web programming, I highly suggest Head First Servlets and JSP^[7]. There are also very good libraries such as Google Guava, Apache Commons etc.

  1. http://www.jetbrains.com/idea/features/editions_comparison_matrix.html
  2. http://docs.oracle.com/javase/tutorial/
  3. http://docs.oracle.com/javase/7/docs/api/
  4. http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683
  5. http://findbugs.sourceforge.net/
  6. http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601
  7. http://www.amazon.com/Head-First-Servlets-JSP-Certified/dp/0596516681

u/radekhecl · 1 pointr/java

First make sure you know well plain java. Do some sipmle programs, read web tutorials or beginners book. After that, read Effective Java from Joshua Bloch.
https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683
You don't need to read every line of this book, but at least you should know roughly what is going on there.

Regarding the framewors. There are zillions of them so you have to be selective. It really depends on what you want to do.
Spring + sql is good for web applications. These are for example used as a administrative portals. It's kind of job safety since there are many of them and won't disappear soon. Go for that.

Now just a little advice for the job. The salary of the programmers goes down since it's becoming still easier to create generic things. To me it turned out to be really good deal to combine it with mathematics. Don't look to yourself only as a programmer, bring something more to the table.

Let me know if you need any help.

P.S.
I am thinking about flushing out some posts and examples related to computer vision in the next couple of months. Is this something you would be interested in to see?


u/[deleted] · 1 pointr/learnprogramming

Nothing too related to Android/iOS specifically, but...

u/smesc · 1 pointr/androiddev

Programming concepts and fundamentals don't change much. Also read effective java for style/design patterns/anti-patterns etc. http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

u/UberBeaver · 1 pointr/cscareerquestions

I would mainly recommend that you read Effective Java. It contains a number of tips and best practices for writing good Java code. Read it through, and when you get a Java job, be sure to incorporate the practices from the book in your coding.

u/bullcitydev · 1 pointr/learnprogramming

I would recommend picking up Effective Java and following along with the code examples. It's a great book that will help you when writing more 'advanced' Java programs.

Also if you are planning on making a career out being a Java engineer, I am currently in the process of writing a book that will hopefully be able to teach you many of the skills that you will need in the professional world. If you would like to know more you can sign up at www.javabeyond.com.

u/Vesp_r · 1 pointr/learnprogramming

I haven't read Head First Java, but I see it recommended often.

I personally learned from reading
The Java™ Tutorials
and Effective Java.

u/aboothe726 · 1 pointr/programming

i agree. books and tinkering are the very best way to get introduced to programming.

i read my first programming book the summer between my sophomore and junior years in high school. (i don't recall how old that made me at the time. 16? bah, i'm getting old.) anyway, that book was Herbert Schildt's The Complete Reference: C++. i found it really interesting, but knowing what i know now Python (The Quick Python Book and Learning Python are good) or Java (I learned on Thinking in Java, but Effective Java is supposed to be good, too) are probably better places to start.

hopefully your parents support your desire to learn programming. $30-$50 for a programming book and access to a computer are a small price to pay for starting a child on a hobby that could turn into a good career!

good luck, and keep us posted! :)

u/bumhugger · 1 pointr/learnprogramming

It's perfectly fine in an isolated assignment like this, but it's also easy to start using exceptions as a part of code flow in larger software when you are writing programs for a living. And that's when bad stuff might happen, plus it is harder for your co-workers to decipher what your methods are supposed to do.

Effective Java by Joshua Bloch is probably the best book you can read if you want to improve your code. It's not that thick, and it's divided into "items" that are easily read in any order you like. For instance, there is an item about exceptions, just like your case, but probably way better explained than I did :)

Things like this might seem nitpicking, but in my opinion the easier it is to read your code, and the more robust your methods and classes are, the better. Otherwise you produce spaghetti that people have to maintain 10-15 years from now and they will curse their miserable lives every day. I've been there, it really opened my eyes :D

u/Nimelrian · 1 pointr/de_IAmA

Ich war schon immer ziemlich fit was Programmierung angeht.

Codecademy ist eigentlich immer eine gute Anlaufstelle. Falls du lieber mit Büchern lernen willst, gibt es Java von Kopf bis Fuß und nachdem du die Grundlagen drin hast Effective Java. Beide Bücher sind leider schon etwas älter und decken daher nicht die neuesten Features von Java 7/8 ab, aber die kann man sich auch mit Online-Artikeln aneignen.

u/Deinumite · 1 pointr/java

That's probably a good starting book. Once you are more advanced, and if you want to continue learning java, I'd check out this book. It's literally the best java book ive ever read.

http://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/ref=sr_1_1?s=books&ie=UTF8&qid=1319858709&sr=1-1

u/yusuke_urameshii · 1 pointr/java

I can't mention much about certs, but here is a good book for when you are a little more experienced in java to use for some more advanced subjects.

Also learn the difference between the environments. Host environments are different from how java environments work as well. some examples would be java runtime vs compile time compilation, and how there are somethings that get you into trouble more so than host would, etc.

http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

u/MemoVsGodzilla · 1 pointr/learnprogramming

Well if you enjoy Josh Bloch style then go on with this , its really good and if you pay attention you can learn a bunch of stuff that work on any object oriented language.

u/DevIceMan · 1 pointr/cscareerquestions

To be honest, the vast majority of formal education classes (that I am aware of) at most CS universities are completely lacking in this area. Some of the resources available (such as that book I linked), are so much higher quality than you'll get at university, written and refined by some of the best in the field, that your best bet is probably to do a little reading. There are also good & free talks online, such as the ones by Google I/O ones.

Here are a few links I've saved on the subject of architecture and design.

u/AllGoodMan · 1 pointr/cscareerquestions

Also This is one of the best books to get

u/TheCellch · 1 pointr/learnprogramming

we worked through some items from Effective Java and Clean Code but that is more of an addition and good to know. The Principles we learned were just worked into the lessons and nothing from books. Here's the list of them so you can take a look at them, Wikipedia should give you more information (I linked them for you). However it is important to not just read them and add a checkmark, some of them really change the way you programm. You can't respect all of them cause some will exlude others. And finally not all are really principles some are more of a guideline.
Start with SOLID:

  1. (SRP) single responsibility principle
  2. (OC-Principle) Open/Close Principle
  3. (LSP) Liskov substitution principle
  4. (ISP) Interface segregation principle
  5. dependency inversion principle
  6. (DRY) don't repeat yourself
  7. (CoI) Composition over inheritance
  8. Effective Java Item 17 Design and document for inheritance or else prohibit it
  9. Loose coupling
  10. Test-driven development
    no real Principles from here on:
  11. differ Information Hiding from encapsulation
  12. Use speaking names for classes, methods and attributes
  13. A lot of little units is better then one big (refering to classes)
  14. Use Interfaces to abstract and decouple

    I just checked my notes and here is what I did not mention so far:
    We of course learned the Encapsulation (public, private, protected none). We learned about Collections ((Java Collection Framework) Map, Set, List and the different implementations). Threading, concurrency, Executor, Queue and Dequeue, MVC, Event/Listener Pattern, Exceptionhandling, Comperator, Hash and Equals, Polymorphism, casting.

    Please not that we are not professionals on all this we just learned the basics more or less.

    Hope this helps
u/AlmondRoast · 0 pointsr/learnprogramming

If you're mainly interested in Java, I would recommend Effective Java by Joshua Bloch. It's a great guide with recommendations for best practices in the language.

For C, the best book is The C Programming Language by Kernighan and Ritchie. I would recommend that you read that before ever looking at C++ because C++ is based on C. In fact, it's such a great book that I would recommend reading it before you read anything else on any language. You can skip the file system and Unix stuff though.

For C++, I have never found a good beginner book, so my suggestion would be that after you read the above C book, read the stuff in this tutorial and then read Effective C++ by Scott Meyers. It's another best practices book.

For Python, I've heard good things about Learning Python but I don't really know. I actually found it more useful to just go through the Python tutorial and then start making fun little scripts.

Hope that helps!

u/TyphonRT · 0 pointsr/java

You can't go wrong with these two books:
http://www.amazon.com/Java-Puzzlers-Traps-Pitfalls-Corner/dp/032133678X/

http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

Joshua Bloch is a good author and was involved in implementing the Java API (collections API, etc.) early on...

You can also find several talks he's done online for Java puzzlers.

Some good presentations online (including some puzzler ones):
https://www.youtube.com/results?search_query=joshua+bloch

u/pacman1176 · -15 pointsr/compsci

I have found that once you get into the workforce, the need for writing the most efficient algorithms and the overall value that I have gotten from such courses rarely comes up in every day application development. What they really should be teaching you are best practices and programming patterns. Here's a great book on that. It's titled Java, but much carries over to other languages as general practice.

http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683