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
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/
Ideas on Innovation around Software. We Thrive On Ideas. We are Learner Centered, Open Source & Digital Focused.