Auto

A collection of source code generators for Java. (by google)

Auto Alternatives

Similar projects and alternatives to Auto

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better Auto alternative or higher similarity.

Auto reviews and mentions

Posts with mentions or reviews of Auto. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-05-27.
  • Any library you would like to recommend to others as it helps you a lot? For me, mapstruct is one of them. Hopefully I would hear some other nice libraries I never try.
    21 projects | /r/java | 27 May 2023
    I like to use AutoService to make using Java's ServiceLoader easier.
  • Autowiring In Spring, its implementation, limitations, Best Practices and Considerations While Using It
    1 project | /r/programming | 28 Mar 2023
    I've also had great luck combining that with AutoValue to allow production vs test injections without the new Foo(thing, null, null, null, thing2, null, null) situation:
  • Java records make Google's AutoValue mostly obsolete
    2 projects | /r/java | 2 Dec 2022
    AutoValue has posted a new doc comparing itself to Java record classes. (Records were new in Java 16, or earlier with --enable-preview.)
  • Don’t call it a comeback: Why Java is still champ
    17 projects | news.ycombinator.com | 9 Aug 2022
    That means I don't forget about fields (as can happen if you're just doing `person.setX()` all the time). It's easy to see what is what when reading it. I can delete fields I don't want to initialize at the time. Yes, maybe immutable objects are the One True Way, but C# lets me choose (I can label properties with an initializer `init` rather than a setter `set` and then they're immutable).

    Kotlin offers stuff like this too because it's really useful toward creating code that's easy to create and maintain. Go also lets you initialize structs in a similar fashion.

    Java has come back to us a decade or more late with records. They're not bad, but they're only offering one thing. They don't cover what C#, Kotlin, Go, and other languages have offered for so long.

    The annoying thing about Java is that it doesn't feel pragmatic a lot of the time. It feels like the language hates stealing ideas from others. It's Java: people steal ideas from Java, not the other way around. People do crazy things just to get POJOs including Immutables (http://immutables.github.io), AutoValue (https://github.com/google/auto/), Lombok (https://projectlombok.org), Joda Beans (https://www.joda.org/joda-beans/), and maybe more. They generate lots of code at compile time or do funky runtime stuff.

    It just feels like Java misses the pragmatic stuff and still kinda doesn't want to handle that. I feel a bit silly harping on things like POJOs and setting data on a new object, but that's a big part of day-to-day stuff and it definitely pushes users away from Java towards languages that seem "better" simply because they don't have Java's oddly strong attachment to not offering simple value objects. Yes, again, records do something - but it feels like Java ignored how people are using Kotlin, Go, C#, and more and didn't go for something that would have been as widely applicable and pragmatic as it could have been.

    Java has a lot of great stuff like great GCs (yes), lots of cool research, great performance, and Project Loom is really exciting. I just wish the language would lean a little more practical.

  • poor java
    1 project | /r/ProgrammerHumor | 7 Jun 2022
    The main disadvantage of Java is the boilerplate and the fact that you don't get cool metaprogramming features. The boilerplate can be reduced with tools like AutoValue. The lack of monkey patching and crazy SFINAE template shenanigans is that it is much easier to look at some piece of code and know what it's calling. You have static types, so you can jump to the method definition reliably (as opposed to Python), and there aren't many subtle syntax features that can trip you up (like lvalue vs rvalue references in C++). You can absolutely make a mess of Java with crazy frameworks, but the fact that the language itself has simple syntax means that nobody else in the organization can do anything too clever.
  • TclTutor 3: Computer aided instruction package for learning the Tcl language
    1 project | news.ycombinator.com | 14 Feb 2022
    There is no way you can tell that's valid Common Lisp without actually compiling and executing the code in the json-reader.lisp file. When the compiler gets to (enable-json-syntax), it sees that it is a macro so it executes its code at compile-time. That code then redefines the meaning of the { and [ characters to be the start of JSON objects/arrays (instead of their normal meaning in Common Lisp), and installs code telling Common Lisp how to parse JSON syntax, which is triggered when those characters are encountered in input. The example-object function shows an example of using it. Finally, (disable-json-syntax) is another macro, also executed at compile time, which undoes those changes to the Common Lisp syntax.

    Common Lisp did not invent the idea of allowing a program to dynamically alter the language syntax as it was being parsed; I believe the idea was first introduced in Maclisp, and from there spread to other LISP dialects (such as Franz Lisp and Interlisp) before finally being standardised in Common Lisp. The originators of Scheme intentionally decided to leave this feature out, but some implementations/descendants of Scheme have added it back in, such as Racket [1], Guile [2], and Chicken Scheme [3]. Other Lisp-family languages (such as Clojure or Emacs Lisp) have resisted calls to add it, despite encouragement from certain quarters.

    Earlier you spoke of "Tcl's lack of a grammar up against Scheme, Lisp", but if runtime-extensible syntax is a form of "lack of a grammar", then many Lisp family languages lack grammar too.

    Another language for which this is true (albeit to a significantly lesser degree), is Java. With Java, you can run arbitrary code at compile time by defining an annotation processor. The annotation processor code is run when the annotation is encountered. The annotation processor is allowed to issue compilation errors. It can also generate more source code for additional classes, which gets added to the compilation process, and your program may refer some of those generated classes, and hence need that generated code to compile–for an example see [4] from the Google AutoValue docs, where the "AutoValue_Animal" class being constructed in the create() method is dynamically generated by a processor which is triggered by the @AutoValue annotation. So, if your Java program contains annotations with an associated processor, and if you define "syntactically correct" as "compiles without any errors", then you can't know if the Java program is syntactically correct without executing arbitrary Java code.

    [0] https://gist.github.com/chaitanyagupta/9324402

    [1] https://docs.racket-lang.org/reference/Reader_Extension.html

    [2] https://www.gnu.org/software/guile/manual/html_node/Reader-E...

    [3] https://wiki.call-cc.org/man/5/Module%20(chicken%20read-synt...

    [4] https://github.com/google/auto/blob/master/value/userguide/i...

  • Magic Beans - automatic get/set, equals, hashCode, toString without any compiler hacks
    4 projects | /r/java | 22 Jan 2022
    Reminds me of Google’s AutoValue: https://github.com/google/auto/tree/master/value
  • What are some of your tips for improving the Java development experience?
    5 projects | /r/java | 11 Jan 2022
    Records where you can, and because Lombok is controversial, Immutables is the other alternative (or autovalue). Actually, all code generation tools are fantastic: Immutables, MapStruct, jOOQ...
  • So true
    1 project | /r/ProgrammerHumor | 4 Jun 2021
    Via Lombok, yes, which, as of now, is a default plugin in Idea, which everyone is using anyway. If you don't like Lombok particularly (and god knows, I can't imagine why), there is an alternative made by Google called Auto. Or you can use Scala, which has some features like that natively and is 100% interoperable with Java (meaning you can make a new Scala file within the current project and start using it right away). I imagine Kotlin also has some syntax sugar; however, I am not familiar with Kotlin very well.
  • How to Write an Equality Method in Java (2009)
    1 project | news.ycombinator.com | 30 Apr 2021
    For immutable value types, AutoValue[1] is a nice library for automating this. Lombok[2] is also popular, but a lot of orgs avoid it because it has some pretty deep dependencies on implementation details of the JDK that aren't guaranteed to be stable across releases. It seems well-maintained in practice, thoguh. Once Java records[3] are out of preview, they will probably be the preferred approach, but it will be a while before most teams are on a version of the JDK that supports them.

    For mutable objects, the notion of equality is hairy in general, because what you want often depends on why you'd be comparing the two objects. You might have two mutable objects that can be meaningfully compared in your business logic, but absolutely should not be used as keys in a map. Often you can satisfy your goals by implementing a separate method that does not attempt to conform to the 'equals' contract, which ensures it will not unintentionally be used for e.g. data structure ordering.

    [1] https://github.com/google/auto/blob/master/value/userguide/i...

    [2] https://projectlombok.org/features/EqualsAndHashCode

    [3] https://blogs.oracle.com/javamagazine/records-come-to-java

  • A note from our sponsor - InfluxDB
    www.influxdata.com | 19 Apr 2024
    Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality. Learn more →

Stats

Basic Auto repo stats
14
10,362
9.3
3 days ago

google/auto is an open source project licensed under Apache License 2.0 which is an OSI approved license.

The primary programming language of Auto is Java.

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com