Saturday, March 24, 2018

I saw Jack Frosch speak on Groovy and Grails at the STL Angular Meetup on Wednesday night.

That doesn't really sound like an Angular talk, huh? It really wasn't. Jack tried to tie the talk into Angular as a subject by drawing a comparison between Groovy and TypeScript which as languages have some similarities. Also, Grails as a web framework has an easy to see parallel to .NET Core Controllers or the .NET Framework's ASP.NET Web API stuff which is often used as the API-side of a headless app that has an Angular app as a head that it could wear kinda like Princess Mombi in that 1980s "Return to Oz" movie. I had been under the false impression that Groovy compiled to Java, but instead they both compile to bytecode as does Scala. The bytecode may be run by the Java Virtual Machine or JVM. Gradle is a Groovy-based build system for Android, and Grails (Groovy on Rails) is a pimped out framework not unlike the Spring framework that allows one to do numerous things. I guess Spring is strictly Java and Grails strictly Groovy. It was pointed out to us that it's not too tough to get Java objects to be used in Groovy or vice versa. In both languages, objects inherit from java.lang.Object as the ultimate base much like good ol' object in C#. There is a joint compiler for Groovy and Java to allow for some crosstalk. Spock is a testing framework for Java and Groovy and the JDK is the Java Development Kit which has to be installed to install the JVM. SDKMAN! is package management for the Linux and Mac world. Groovy Beans DSL allows one to declare Java beans in the Spring framework. Groovy is statically typed but also very forgiving. You can get away with deferring a lot of sanity checks until runtime. IntelliJ or the IDE will warn you when you are going beyond your privileges, but Groovy will still likely let you go there. The def type is like any in TypeScript. Quartz is a job scheduler. Traits in Groovy allow for mixins. The BigDecimal type is probably the numeric type to use. It allows for floating point precision. As with ASP.NET MVC there is sort of a Grails equivalent of MVC with views (and certainly there is an MVC pattern separating concerns) which is sort of falling out of vogue and there is also a REST API thing. JBoss Application Server is a web server and JEE is Java Enterprise Edition also known as Java EE and formerly the Java 2 Platform and that is for distributed computing and other whistles and bells. JAR stands for Java Archive and JAR files are little deployable bits of code. They may be bundled into a bigger WAR file wherein WAR stands for Web Archive. There is a Goland ORM that has the name GORM, but it is the Grails' object relational mapping that is the GORM associated with Grails. It started out as a wrapper around Hibernate that allowed one to get out of writing HQL (Hibernate Query Language) with some of its tricks, but in modern times it has blossomed into much more. You may have interfaces for interacting with an object that do all mechanics based on naming convention (count in the name might be for getting a record count, etc.) as of version 6.1 and that too rides atop Hibernate, but there is also some new code for NoSQL solutions including MongoDB, Redis, Neo4J, Cassandra, and AxGorm. Micronaut is something like Grails coming for microservices and it will be released under the GNU general public license. A Sigmund Freud quote from one of Jack's slides was: "Analogies, it is true, decide nothing, but they can make one feel more at home."

 
 

Addendum 8/13/2018: JBoss is short for EJBoss which is short for Enterprise JavaBeans Open Source Software. Know your acronyms!

No comments:

Post a Comment