Tag Archives: Java

General checklist for performance tuning & go-live in Java – Part 1

Here is a general checklist for performance tuning & go-live in Java – Part 1:

  • Servers: CPU, Memory, Threads, Network configurations, page size, hardening and more
  • JVM: MBeans, Security, Garbage collection type and settings, Arguments, Heap, Version, Core allotment, Generations and more
  • App server: Thread pool, JDBC/JNDI, Type of connection pooling, Session replication, caching, log rotation, log levels and more
  • Database: Indexing, Thread pool, Privileges, Connections, Top queries/plans and more
  • Network: Latency, DNS, Security, Firewalls/WAF/CDN
  • Other components like search/filestores/integrations/etc.: Caching, thread pools and more
  • VAPT/Security: SSL, OWASP, SAST/DAST, CSP, code quality and more
  • Documentation on architecture, deployment, requirements, design and more
  • APM/Monitoring tools – Instrumentation, gauges and more
  • Thread profiling and heap dumps
  • Service profile for APIs
  • Code optimization
  • Optimum auditing, reporting & SSO/IAM
  • Reusable patterns / architecture styles and designs for performance, usability & security
  • DevSecOps strategy and implementation
  • DR strategy and implementation
  • Regular load & performance tests
  • Horizontal scaling / clustering & vertical scaling
  • Rule of thumb: Work layer by layer and tackle the biggest problems first.

Email me: Neil@HarwaniSystems.in

Java ecosystem observations – Part 1

Below are some notes on Java which help us to decipher how it has evolved over time since 1995. This is part 1 of the series. This acts as a mini caselet to understand how a successful ecosystem related to an application programming language has evolved over decades.

  • Origins: Bytecode, compile once, run anywhere concept via Java Virtual Machine – 1995
  • Object oriented origins, largely focussed on application programming
  • Steadily in one of the top choices for programming since origin
  • Liberal license & forks under TCK/JCK & OpenJava along with paid, enterprise options of Oracle / IBM and more as of 2022
  • Large open standards, open collaboration & open source influence since the beginning
  • Automatic memory management
  • Top languages built on top of JVM: Java, Kotlin, Groovy, Scala, Clojure as of 2022
  • Associated top products, frameworks, libraries and platforms built on top of Java: Spring, Activiti, jBPM, Drools, Log4j, Kafka, Tomcat, Spark, ElasticSearch and more as of 2022
  • Multi-threaded
  • Platform independent & Just in time
  • Influenced by C/C++
  • Over time, both Java Spring & Jakarta EE have evolved for enterprise Java
  • Has developed coding standards
  • Has a well defined specification ecosystem
  • Spring ecosystem has support for microservices, reactive programming, cloud, webapps, serverless, events, batch, security and more
  • JNI is an option to run native code
  • Thousands of tutorials, blogs, websites, news, videos & technology articles cover Java on routine basis
  • Functional programming concepts recently introduced

References:

  • https://en.wikipedia.org/wiki/Java_(programming_language)
  • https://en.wikipedia.org/wiki/List_of_JVM_languages
  • https://en.wikipedia.org/wiki/List_of_Java_frameworks
  • https://en.wikipedia.org/wiki/Spring_Framework
  • https://docs.oracle.com/en/java/
  • https://openjdk.org/
  • https://google.github.io/styleguide/javaguide.html
  • https://docs.oracle.com/javase/specs/
  • https://cr.openjdk.java.net/~iris/se/11/latestSpec/java-se-11-jls-draft-diffs.pdf
  • https://en.wikipedia.org/wiki/Java_Native_Interface
  • https://www.baeldung.com/jni
  • https://www.baeldung.com/java-functional-programming
  • https://jakarta.ee/