News for hackers. Stuff that matters.
Re:Better Java – Resources for Writing Modern Java by kilink on Saturday September 19, 2015 @07:24PM (#10245907)
I'm surprised he didn't mention AutoValue [1] or Lombok (using @Data and @Builder) in his section about data objects and builders. I prefer AutoValue, but both approaches cut down on a lot of the boilerplate (and they also generate sensible equals(), hashCode(), toString(), etc).

It's also kind of a nitpick, but I disagree with his preference for Guava's Maps.newHashMap() vs new HashMap<>(). I'm pretty sure the only reason those static methods exist is because pre-Java 7 didn't have the diamond operator.

[1] https://github.com/google/auto/tree/master/value

Re:Better Java – Resources for Writing Modern Java by mdasen on Saturday September 19, 2015 @11:07PM (#10246442)
Immutables (http://immutables.org/) is another option which creates nice, immutable value classes. It's a bit more succinct than AutoValue, but it does still require annotation processing in your IDE.
Re:Better Java – Resources for Writing Modern Java by CHY872 on Sunday September 20, 2015 @09:07AM (#10247364)
Lombok's a bit sketchy as parts of it rely on some undocumented, non-standard parts of the Sun Java compiler - you have to be really into code generation to want to use it.

Other libraries like Immutables are safer for this purpose.

Re:Better Java – Resources for Writing Modern Java by adpreese on Saturday September 19, 2015 @08:07PM (#10246025)
He mentions Lombok in the tools section.

And Guava's collection creation methods are part of an intense desire to not use the new key word anywhere in application code.

Re:Better Java – Resources for Writing Modern Java by kilink on Saturday September 19, 2015 @08:33PM (#10246090)
Also, if you look at the Javadocs for some of the creation methods, they explicitly state that they are for Java 6 and earlier, and that modern code should just use the constructor with the diamond syntax.

http://docs.guava-libraries.googlecode.com/git/javadoc/com/g...

Re:Better Java – Resources for Writing Modern Java by Pyxl101 on Saturday September 19, 2015 @10:54PM (#10246412)
The other replies kind of hit on this, but I'll expand on it by saying:

The collection creation methods existed because Java could perform type inference on methods but could not on constructors:

  // Java 1.5
  Map<String,Integer> map = new HashMap<String,Integer>();
  // Guava
  Map<String,Integer> map = Maps.newHashMap();
  // Java 1.8 diamond notation
  Map<String,Integer> map = new HashMap<>();
Re:Better Java – Resources for Writing Modern Java by kilink on Saturday September 19, 2015 @08:28PM (#10246073)
I realize he mentions Lombok, but he specifically bemoans the extra boilerplate with writing builders and data classes, but does not mention the @Data or @Builder annotations...
Re:Better Java – Resources for Writing Modern Java by jonalmeida on Tuesday September 22, 2015 @03:02PM (#10260830)
Wouldn't the best way to create an empty map be to use `Collections.emptyMap()`?