Code Monkey home page Code Monkey logo

java-modern-tech-practice's Introduction

👤 李鼎 | Jerry Lee

🔥 We're hiring‼️

♥️ 欢迎自荐/内推,加我微信: oldratlee(请注明招聘♥️

java-modern-tech-practice's People

Contributors

oldratlee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

java-modern-tech-practice's Issues

Java Interoperability of Scala

Interoperability

Using Scala Code from Java

Byte-code underneath

Related topic

Scala FP std libs learning: cats / scalaz

🐈 Cats

Blog/Articles

Official docs

Tutorials/Kata/Example Projects

  • herding cats by Eugene Yokota
  • Scala Exercises by 47 Degrees offers multiple online exercises to learn about the type classes and datatypes included in Cats.
  • Scala Pet Store Demonstrates FP techniques while maintaining approachability for people with an OO background. Uses tagless final for the core domain, and popular Typelevel libraries including Cats, Http4s, Circe and Doobie.

Vedios


Books

System Control/Resilience

clojure meterial

Clojure

Principle / Rich Hickey

Core / necessity

Sites

Articles

Tools

Libs

  • Specter rejects Clojure's restrictive approach to immutable data structure manipulation, instead exposing an elegant API to allow any sort of manipulation imaginable.
    https://github.com/nathanmarz/specter
  • Potemkin is a collection of facades and workarounds for things that are more difficult than they should be. All functions are within the potemkin namespace.
    https://github.com/ztellman/potemkin

OO rethinking

problem record: kotlin + lombok compile problem (under maven build)

Problem

Kotlin doesn't see Lombok accessors in Java Files (eg: @Data).

Problem infos

Problem status and solution

status:

has not been resolved!

Quick and dirty solution

Convert lombok-fied java file to kotlin language.
aka. use kotlin instead of lombok. 😂

But this solution force the migration to kotlin, not nice! 😫

Related resources

arch-ish meterial

fault tolerance

move to dedicated issue #7

Reactive

Async

Serverless

Microservices

Arch

AKKA(Async/Reactive)

STM

Implementation


Reference

collection libs on jvm

More than Persistent Collections ❤️

Contain persistent(immutable) collections/Functional Data Structures 📌

  • vavr ❤️ , VΛVΓ (Vavr, formerly called Javaslang) is a non-commercial, non-profit object-functional library that runs with Java 8+. It aims to reduce the lines of code and increase code quality.
  • cyclops ❤️ , An advanced, but easy to use, platform for writing functional applications in Java 8.
  • Functional Java , Functional programming in Java
  • procrastination , A small, straightforward library bringing the benefits of functional programming to Java 11
  • sophisticated FP Languages ❤️ have built-in Persistent Collections support 📌
    • Scala ❤️ , Scala combines object-oriented and functional programming in one concise, high-level language. Scala's static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.
    • Clojure ❤️ , Clojure is a dynamic, general-purpose programming language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language, yet remains completely dynamic – every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.

Persistent(immutable) Collections/Functional Data Structures 📌

Primitive Collections/Type-specific Collections 💎

High Performance/Sophisticated Collection(-ish) 🚄

  • JCTools ❤️ , offer some concurrent data structures currently missing from the JDK. JCTools offers excellent performance. It's stable and in use by such distinguished frameworks as Netty, RxJava and others.
  • disruptor ❤️ , A High Performance Inter-Thread Messaging Library. Achieve very low-latency and high-throughput with our Java platform. Performance testing showed that using queues to pass data between stages of the system was introducing latency, so we focused on optimising this area.
  • High Scale Lib ❤️ , Cliff Click's high scale lib.
  • caffeine ❤️ , Caffeine is a high performance, near optimal caching library based on Java 8. For more details, see our user's guide and browse the API docs for the latest release.
  • concurrentlinkedhashmap , A high performance version of java.util.LinkedHashMap for use as a software cache.
    • Caffeine is the Java 8 successor to ConcurrentLinkedHashMap and Guava's cache. Projects should prefer Caffeine and migrate when requiring JDK8 or higher. The previous caching projects are supported in maintenance mode.
    • code repo: https://github.com/ben-manes/concurrentlinkedhashmap

Collections Backed by Storage 🗃

  • mapdb ❤️ , MapDB provides Java Maps, Sets, Lists, Queues and other collections backed by off-heap or on-disk storage. It is a hybrid between java collection framework and embedded database engine.

Collections with Distribution 🌏

Contain Collections, but NOT Persistent 😱

Related Resources

Maven Repository: collections https://mvnrepository.com/tags/collections

Expression Language / Expression Engine / Rule Engine

Expression Language

The Java Unified Expression Language is a special purpose programming language mostly used in Java web applications for embedding expressions into web pages. The Java specification writers and expert groups of the Java web-tier technologies have worked on a unified expression language which was first included in the JSP 2.1 specification (JSR-245), and later specified by itself in JSR-341, part of Java EE 7.
https://en.wikipedia.org/wiki/Unified_Expression_Language

Rule Engine

Articles

study: serialization

🍺 serialization framework

Kryo

  • repo: https://github.com/EsotericSoftware/kryo
  • EsotericSoftware/kryo: Java binary serialization and cloning: fast, efficient, automatic.
  • Kryo is a fast and efficient binary object graph serialization framework for Java.
  • Additional serializers(for some jdk types and some external libs like e.g. joda time) are available in a separate project on github, kryo-serializers.

JBoss Marshalling

  • repo: https://github.com/jboss-remoting/jboss-marshalling
  • an alternative serialization API that
    • fixes many of the problems found in the JDK serialization API while remaining fully compatible with java.io.Serializable and its relatives,
    • and adds several new tunable parameters and additional features, all of which are pluggable via factory configuration (externalizers, class/instance lookup tables, class resolution, and object replacement, to name a few).
  • this framework was inspired by the need for certain features unavailable with the standard Object*Stream classes
    • Pluggable class resolvers, making it easy to customize classloader policy, by implementing a small interface (rather than having to subclass the Object*Stream classes)
    • Pluggable object replacement (also without subclassing)
    • Pluggable predefined class tables, which can dramatically decrease stream size and serialization time for stream types which frequently use a common set of classes
    • Pluggable predefined instance tables, which make it easy to handle remote references
    • Pluggable externalizers which may be used to serialize classes which are not Serializable, or for which an alternate strategy is needed
    • Customizable stream headers
    • Each marshaller instance is highly configurable and tunable to maximize performance based on expected usage patterns
    • A generalized API which can support many different protocol implementations, including protocols which do not necessarily provide all the above features
    • Inexpensive instance creation, beneficial to applications where many short-lived streams are used
    • Support for separate class and instance caches, if the protocol permits; useful for sending multiple messages or requests with a single stream, with separate object graphs but retaining the class cache
  • home page: http://jbossmarshalling.jboss.org/
  • maintenance is not active...
    • although personally I like the product of jboss and it's high quality 😩

🍺 serialization specification

Protocol Buffers

protostuff

improvement/enhancement of java; independent implementation of java.

practice: functional libs

Functional libs 🌀

more about collection libs on jvm see #13

Related resources

PS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.