layrry
MacWire
Our great sponsors
layrry | MacWire | |
---|---|---|
3 | 6 | |
320 | 1,253 | |
-0.3% | 0.1% | |
4.6 | 7.2 | |
9 months ago | 22 days ago | |
Java | Scala | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
layrry
-
Kafka 4.0, Flink 2.0, Hadoop, and now Spark 4.0 will all drop Java 8 and move to Java 11+!
No, JPMS does not automatically turn the JVM into an NPM like experience with the same dependency being available in different versions. It is possible using the layer feature JPMS introduced, for example with Layrry, but as I understand it, by default Java only has 2 (?) layers, bootstrap and application, corresponding to the bootstrap and application classloaders.
-
Which would be the scala way of building a modular/plugin based architecture application?
Use https://github.com/moditect/layrry which is based on Java Modules. Not tried yet. Sbt does not recognize module-info.java which is essential for it to work. Possible solution is implement an Sbt Plugin. But, I don't know if at the end this would work in development mode which is important.
-
Java Modules - are they common and should we use them?
github.com/moditect/layrry
MacWire
-
typelevel
Coming back to ZIO, besides learning the operators which ZIO has, there is not much to it and you have to embrace calling ZIO.x everywhere. The Layers in ZIO 2.0 are excellent and I believe that the creators want to trick us to write good OOP and we are one macro away from Springs Autowire. Perhaps even macwire is up to speed already, I didn't check for a long time.
-
Why no scala native IOC containers?
You can have IoC without using a DI framework. You just pass the arguments manually. I've found that it works really well. If however that's not your preference there are a couple DI frameworks in scala such as: https://github.com/softwaremill/macwire and https://izumi.7mind.io/distage/index.html
-
Which would be the scala way of building a modular/plugin based architecture application?
Implement the application around https://github.com/softwaremill/macwire and hope the wiredInModule feature (which support dynamic loading) would be ported to Scala 3 soon.
-
Macwire alternatives for scala 3
Arguing for Macwire in Scala 3 is moot anyway, because it won't be available there: https://github.com/softwaremill/macwire/commit/e9281111d78a1beeb8950f367be18cbb67aef9fe
-
Structuring Code with ZIO & ZLayers
One easy reason is that macwire won't be available for Scala 3 (https://github.com/softwaremill/macwire#scala3) 😉
What are some alternatives?
moditect-gradle-plugin - A ModiTect plug-in for the Gradle build system
Scala-Guice - Scala extensions for Google Guice
maven-jpackage-template - Sample project illustrating building nice, small cross-platform JavaFX or Swing desktop apps with native installers while still using the standard Maven dependency system.
DIStage - Productivity-oriented collection of lightweight fancy stuff for Scala toolchain
moditect - Tooling for the Java Module System
Airframe - Essential Building Blocks for Scala
piranha - Piranha - a modern cloud runtime
Scaldi - Lightweight Scala Dependency Injection Library
jtoolprovider-plugin - This Maven Plugin does two things. First, it automatically transforms your Maven dependency graph into Java modules. Second, it bridges Maven and built-in Java tools like jdeps, jlink, and jpackage.
SubCut - Scala Uniquely Bound Classes Under Traits
Grafter
Domino - OSGi dynamics made easy