# Java Programming Language

## For Beginners <a href="#m_1754139415841401418gmail-java-and-more-forbeginners" id="m_1754139415841401418gmail-java-and-more-forbeginners"></a>

1. Tutorial <https://docs.oracle.com/javase/tutorial/>
2. Video Tutorial . <https://www.udemy.com/java-tutorial/>
3. Even more tutorials <https://www.javacodegeeks.com/2015/01/get-your-advanced-java-programming-degree-with-these-tutorials-and-courses.html>
4. Project Ideas: <http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/>
5. Introduction to Computer Science <https://www.edx.org/course/introduction-computer-science-harvardx-cs50x>
6. <https://www.javacodegeeks.com/2015/06/java-programming-tips-best-practices-beginners.html>

## Links <a href="#m_1754139415841401418gmail-java-and-more-links" id="m_1754139415841401418gmail-java-and-more-links"></a>

1. Tutorials . <http://www.baeldung.com/>
2. Spring Boot <https://spring.io/guides/gs/spring-boot/>
3. Gradle <https://www.tutorialspoint.com/gradle/>
4. gRPC <https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/helloworld>
5. Why field injection is evil <http://olivergierke.de/2013/11/why-field-injection-is-evil/>
6. FileInputStream / FileOutputStream Considered Harmful <https://www.cloudbees.com/blog/fileinputstream-fileoutputstream-considered-harmful>
7. `https://`[`github.com/in28minutes/java-best-practices`](http://github.com/in28minutes/java-best-practices)
8. `https://`[`github.com/cxxr/better-java`](http://github.com/cxxr/better-java)
9. `https://`[`github.com/akullpp/awesome-java`](http://github.com/akullpp/awesome-java)
10. `http://`[`www.javapractices.com/home/HomeAction.do`](http://www.javapractices.com/home/HomeAction.do)
11. `so you want to throw an Exception` [`http://normanmaurer.me/blog/2013/11/09/The-hidden-performance-costs-of-instantiating-Throwables/`](http://normanmaurer.me/blog/2013/11/09/The-hidden-performance-costs-of-instantiating-Throwables/)
12. <https://github.com/Vedenin/useful-java-links>
13. <https://martinfowler.com/bliki/MonolithFirst.html>
14. <https://about.sourcegraph.com/go/grpc-in-production-alan-shreve/>
15. Spring 5 <http://www.baeldung.com/spring-5-functional-web>
16. <http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api>
17. Spring Cloud for Microservices Compared to Kubernetes <https://developers.redhat.com/blog/2016/12/09/spring-cloud-for-microservices-compared-to-kubernetes/>

## Golang for Java Developers <a href="#m_1754139415841401418gmail-java-and-more-golangforjavadevelopers" id="m_1754139415841401418gmail-java-and-more-golangforjavadevelopers"></a>

1. <https://github.com/fstab/go-programming-for-java-developers>
2. <https://steveperkins.com/go-for-java-programmers/>
3. <https://yourbasic.org/golang/go-java-tutorial/>

## Testing  <a href="#m_1754139415841401418gmail-java-and-more-testing" id="m_1754139415841401418gmail-java-and-more-testing"></a>

* <http://spockframework.org/>
* <http://spockframework.org/spock/docs/1.1/index.html>
* <http://www.baeldung.com/groovy-spock>
* <https://thejavatar.com/testing-with-spock/>
* <http://farenda.com/spock-framework-tutorial/>
* <https://github.com/spockframework/spock-example>

## IntelliJ IDEA <a href="#m_1754139415841401418gmail-java-and-more-intellijidea" id="m_1754139415841401418gmail-java-and-more-intellijidea"></a>

1. <https://www.jetbrains.com/toolbox/app/>
2. <https://plugins.jetbrains.com/plugin/9696-java-stream-debugger>
3. <https://plugins.jetbrains.com/plugin/9354-kubernetes-and-openshift-resource-support>
4. <https://plugins.jetbrains.com/plugin/4455-key-promoter>
5. <https://plugins.jetbrains.com/plugin/8277-protobuf-support>
6. <https://plugins.jetbrains.com/plugin/6317-lombok-plugin>
7. <https://plugins.jetbrains.com/plugin/7495--ignore>
8. <https://plugins.jetbrains.com/plugin/4230-bashsupport>
9. <https://plugins.jetbrains.com/top-downloads/idea>
10. <https://www.voxxed.com/blog/presentation/presentation-42-intellij-idea-tips-tricks-45-minutes>
11. <https://www.jetbrains.com/help/idea/sharing-your-ide-settings.html>

## Books <a href="#m_1754139415841401418gmail-java-and-more-books" id="m_1754139415841401418gmail-java-and-more-books"></a>

1. Core Java, Volume I and II; Horstmann
2. OCA/OCP Java SE 7 Programmer I & II Study Guide; Sierra & Bates
3. Effective Java; Bloch
4. Java Concurrency in Practice; Goetz
5. Spring Boot in Action; Walls
6. The Software Craftsman: Professionalism, Pragmatism, Pride; Mancuso
7. Java Performance - The Definitive Guide - Scott Oaks
8. Design Patterns; Gang of Four
9. Head First, Design Patterns; Sierra, Robson, Bates & Freeman
10. Clean Code; Martin
11. The Pragmatic Programmer; Hunt
12. Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
13. Introduction to Algorithms, Cormen

## Package scope, hexagonal architecture, DDD, CQRS <a href="#m_1754139415841401418gmail-java-and-more-packagescope-hexagonalarchitecture-ddd-cqrs" id="m_1754139415841401418gmail-java-and-more-packagescope-hexagonalarchitecture-ddd-cqrs"></a>

1. (PL) Keep IT clean: mid-sized building blocks and hexagonal architecture &#x20;

   [https://www.youtube.com/watch?v=ma15iBQpmHU](https://www.youtube.com/watch?v=ma15iBQpmHU\&t=771s)
2. (ENG) Keep IT clean: mid-sized building blocks and hexagonal architecture <https://www.youtube.com/watch?v=KrLFs6f2bOA>
3. Slides: <https://jakubn.gitlab.io/keepitclean/#1>
4. Sample code: <https://github.com/jakubnabrdalik/hentai> and <https://github.com/jakubnabrdalik/hentai-cloudy-rental>
5. Hexagonal <http://alistair.cockburn.us/Hexagonal+architecture>
6. Anemic vs Rich Model <https://dzone.com/articles/anaemic-vs-rich-domain-objects-finding-the-balance>
7. CQRS <https://martinfowler.com/bliki/CQRS.html>

## Java inside Docker

With Java 11 should be ok now. "The Java JVM ~~until now doesn’t~~ didn’t provide support to understand that it\~\~‘s\~\~ was running inside a container and that it has some resources like those that are memory and CPU restricted. Because of that, you ~~can’t~~ couldn’t let the JVM ergonomics take the decision by itself regarding the maximum heap size."

* <https://developers.redhat.com/blog/2017/03/14/java-inside-docker/>&#x20;
* <https://engineering.linkedin.com/blog/2016/11/application-pauses-when-running-jvm-inside-linux-control-groups>&#x20;
* <https://jaxenter.com/nobody-puts-java-container-139373.html>
* Why you’re going to FAIL running Java on docker <https://www.youtube.com/watch?v=UrAE0hD1_pM>
* <https://bugs.openjdk.java.net/browse/JDK-8146115>
* <https://stackoverflow.com/questions/53451103/java-using-much-more-memory-than-heap-size-or-size-correctly-docker-memory-limi/53624438#53624438>
