Send me a roadmap to becoming a full-fledged Java engineer

Contents

I tried to make the roadmap Java version by referring to the URL described below. I hope it will be a learning guide from beginners to good Java engineers.

Also, I can't do everything myself, so as a memo to make it possible. (It took more than a couple of years just to understand the following ...)

reference

https://github.com/kamranahmedse/developer-roadmap

** * Corrected because I received advice on basic grammar by level from the company synchronization (2018/4/9) **

Roadmap

New Wireframe 2 (29).png

Learning method

1.Hello World

As with any programming language, let's first learn how to make it work. Let's write Hello World so much that Gestalt collapses. At first, you don't need to understand the meaning of static void main. You should be able to understand it gradually.

2. Learn the basics

Learn the basics of programming using the sites and books below. There are many things to learn, such as how to write grammar, how to use methods, and access modifiers. I think that you will learn the following parts in the training of the company, but you will forget it just by listening, so let's move your hands repeatedly and remember it. If you can master it enough, you may want to take Java Silver.

▼ Website Dot Install Java Primer (Paid): https://dotinstall.com/lessons/basic_java_v2 Introduction to Paiza Java (partially free): https://paiza.jp/works/java/primer schoo:https://schoo.jp/route/27 Progate:https://prog-8.com/languages/java udemy (discount during campaign): https://www.udemy.com/manga-java/

▼ Books Level: From Bronze to Silver [Introduction to java clearly understood](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F% E3% 81% 8B% E3% 82% 8BJava% E5% 85% A5% E9% 96% 80-% E7% AC% AC2% E7% 89% 88-% E3% 82% B9% E3% 83% 83% E3% 82% AD% E3% 83% AA% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA-% E4% B8% AD% E5% B1% B1-% E6% B8% 85% E5% 96% AC / dp / 484433638X / ref = sr_1_1? ie = UTF8 & qid = 1523104343 & sr = 8-1 & keywords =% E3% 82% B9% E3% 83% 83% E3% 82% AD% E3 % 83% AA% E3% 82% 8F% E3% 81% 8B% E3% 82% 8B + java% E5% 85% A5% E9% 96% 80) [Easy Java 6th Edition](https://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81%97%E3%81%84Java-%E7%AC% AC6% E7% 89% 88-% E3% 80% 8C% E3% 82% 84% E3% 81% 95% E3% 81% 97% E3% 81% 84% E3% 80% 8D% E3% 82% B7 % E3% 83% AA% E3% 83% BC% E3% 82% BA-% E9% AB% 98% E6% A9% 8B-% E9% BA% BB% E5% A5% 88 / dp / 4797388269 / ref = sr_1_1? ie = UTF8 & qid = 1523277532 & sr = 8-1 & keywords =% E3% 82% 84% E3% 81% 95% E3% 81% 97% E3% 81% 84 + java) Level: Silver to Gold [Introduction to Java-From the basics of modern style to object-oriented and practical libraries](https://www.amazon.co.jp/Java%E6%9C%AC%E6%A0%BC%E5%85%A5%] E9% 96% 80-% E3% 83% A2% E3% 83% 80% E3% 83% B3% E3% 82% B9% E3% 82% BF% E3% 82% A4% E3% 83% AB% E3 % 81% AB% E3% 82% 88% E3% 82% 8B% E5% 9F% BA% E7% A4% 8E% E3% 81% 8B% E3% 82% 89% E3% 82% AA% E3% 83 % 96% E3% 82% B8% E3% 82% A7% E3% 82% AF% E3% 83% 88% E6% 8C% 87% E5% 90% 91% E3% 83% BB% E5% AE% 9F % E7% 94% A8% E3% 83% A9% E3% 82% A4% E3% 83% 96% E3% 83% A9% E3% 83% AA% E3% 81% BE% E3% 81% A7-% E8% B0% B7% E6% 9C% AC-% E5% BF% 83 / dp / 477418909X / ref = pd_sim_14_10? _ Encoding = UTF8 & psc = 1 & refRID = KJR3B8760NAVKYWFYBN3) [Introduction to Java that can be clearly understood](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82% 8F% E3% 81% 8B% E3% 82% 8B-Java% E5% 85% A5% E9% 96% 80-% E5% AE% 9F% E8% B7% B5% E7% B7% A8-% E7% AC% AC2% E7% 89% 88-% E3% 82% B9% E3% 83% 83% E3% 82% AD% E3% 83% AA% E3% 82% B7% E3% 83% AA% E3% 83 % BC% E3% 82% BA / dp / 4844336770 / ref = sr_1_2? Ie = UTF8 & qid = 1523275711 & sr = 8-2 & keywords =% E3% 82% B9% E3% 83% 83% E3% 82% AD% E3% 83% AA% E3% 82% 8F% E3% 81% 8B% E3% 82% 8Bjava% E5% 85% A5% E9% 96% 80)

Master the IDE

It is important for engineers how to write programs quickly and efficiently. Let's utilize IDE (development tool) for that. Remember the predictive conversion function and shot cart key, Let's think about how to work efficiently by inserting a convenient plug-in. You may want to ask your seniors and others to tell you the recommended IDE and shot cart key. You should be able to see the person's commitment. Choose the one that suits you. Also, Java is relatively easy to debug compared to other languages. Discard the confirmation from System.out.print as soon as possible.

3. Learn project management

Learn about project management tools that help you manage your Java libraries efficiently and make your builds easier. Famous places are Maven and Gradle. Gradle is a good place to go.

▼ Website Qiita article: https://qiita.com/tarosa0001/items/e5667cfa857529900216 ▼ Books [Introduction to Java Build Tool for Maven / Gradle / SBT / Bazel](https://www.amazon.co.jp/Java%E3%83%93%E3%83%AB%E3%83%89%E3%83] % 84% E3% 83% BC% E3% 83% AB% E5% 85% A5% E9% 96% 80-Maven-Gradle-SBT-Bazel% E5% AF% BE% E5% BF% 9C / dp / 4798049387 / ref = pd_lpo_sbs_14_t_0? _encoding = UTF8 & psc = 1 & refRID = QCEC0G6GN2FWHY4CHZ1Q)

4. Learn standards & best practices

Let's review the sources we have written so far. To write code that others may see, first read the coding conventions. You don't have to remember everything, but let's keep track of the famous ones. It's an industry rule and you'll be stuck in code reviews. Also, there are various design patterns and you don't have to remember them all, but it's a good idea to understand the basic idea of GoF.

▼ Website Google's Java coding convention: https://google.github.io/styleguide/javaguide.html Google's Java coding convention Japanese translation: https://kazurof.github.io/GoogleJavaStyle-ja/ Reverse design pattern that can be understood by monkeys: http://www.nulab.co.jp/designPatterns/designPatterns1/designPatterns1-1.html List of design patterns on Github: https://github.com/iluwatar/java-design-patterns

▼ Books [Practical Java Coding Practice](https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5Java%E3%82%B3%E3%83%BC%E3%83%87% E3% 82% A3% E3% 83% B3% E3% 82% B0% E4% BD% 9C% E6% B3% 95-% E6% A3% AE% E5% B4% 8E-% E9% 9B% 85% E7% A8% 94-ebook / dp / B0185E10ZQ / ref = sr_1_2? s = digital-text & ie = UTF8 & qid = 1523145333 & sr = 1-2 & keywords =% E3% 82% B3% E3% 83% BC% E3% 83% 87% E3 % 82% A3% E3% 83% B3% E3% 82% B0% E4% BD% 9C% E6% B3% 95) [Introduction to Design Patterns Learned in the Augmented and Revised Java Language](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82% E7% 89% 88Java% E8% A8% 80% E8% AA% 9E% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% B6% E3% 82% A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3% E5% 85% A5% E9% 96% 80-% E7% B5 % 90% E5% 9F% 8E-% E6% B5% A9 / dp / 4797327030 / ref = sr_1_1? S = books & ie = UTF8 & qid = 1523105664 & sr = 1-1 & keywords =% E3% 83% 87% E3% 82% B6% E3 % 82% A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3) EFFECTIVE JAVA 2nd Edition

5. Read the source of others & learn the library

The source code of various Java libraries is available on GitHub. It's a good idea to read the code written by others and use it as your own knowledge. You will also find out about the technologies that are in vogue right now. Along with that, you should learn how to use Git (checkout and branching). It would be nice if you could make a pull request to an existing project and make changes to the library. ▼ Website Github: https://github.com/trending/java Qiita article: https://qiita.com/haruto167/items/162551100449ea5c7e6d Getting Started with Git: https://backlog.com/ja/git-tutorial/

6. Learn the test code

Try running test code in Junit or Mock to write better quality code. Also, let's hold down TDD as a development method. You should be able to write good quality code by repeating red → green → refactor.

▼ Website Getting started with java testing with Junit: https://www.slideshare.net/SatoshiKubo1/junitjava ▼ Books Introduction to JUnit Practice ~ Systematic Unit Testing Techniques

7. Write test code with coverage in mind

Let's grasp the coverage (coverage rate) of the source code from the test code and improve the quality further.

▼ Website Create Java code coverage report with JaCoCo: https://ishiis.net/2016/10/13/jacoco-coverage/ EclEmma (including JaCoCo, Eclipse plug-in): http://www.eclemma.org/jacoco/

8. Learn RDB

Select your favorite DB, download and operate it. Let's write SQL repeatedly and master how to write DDL & DML. Also, if you learn ORM, you will be able to easily operate DB from Java. ▼ Website Dot Install PostgreSQL Primer (Free): https://dotinstall.com/lessons/basic_postgresql Dot Install MySQL Primer (Paid): https://dotinstall.com/lessons/basic_mysql_v3 Java O / R Mapper Special: http://d.hatena.ne.jp/torutk/20170726/p1 ▼ Books [Refreshing SQL introductory drill with 215 questions! (Refreshing series)](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83 % AA% E3% 82% 8F% E3% 81% 8B% E3% 82% 8B-SQL-% E5% 85% A5% E9% 96% 80-% E3% 83% 89% E3% 83% AA% E3 % 83% AB215% E5% 95% 8F% E4% BB% 98% E3% 81% 8D-% E3% 82% B9% E3% 83% 83% E3% 82% AD% E3% 83% AA% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA / dp / 4844333933 / ref = sr_1_1? S = books & ie = UTF8 & qid = 1523144222 & sr = 1-1 & keywords = SQL)

9. Learn the framework

Let's learn the framework and learn to apply the source code more efficiently. I personally recommend Spring, and the following books are much more introductory to the framework. Each framework has its own unique characteristics. Just because I learned Struts doesn't mean I can use Spring. So choose the one that suits you. In addition, frameworks are obsolete and popular. Until a long time ago, Struts → Seasar was popular, but nowadays, vulnerabilities are regarded as a problem and it is EOL (End of Life), so it is good to always check the latest trends.

▼ Books First Spring Boot-Easy Java App Development with Spring Framework

10. Create frequently used functions

Learning the Java framework should make it easy to create web pages. Let's implement a site like a blog, "CRUD" (create / reference / update / delete function) and login function. Also, if you learn the template engine accordingly, you should be able to develop more efficiently.

11. Learn web testing

Once you have a website, you test it, but if you automate that task, it can be done efficiently. Get to know your browser automation tools. Also, when a high load is applied, it is necessary to verify how much the site has. Try a high-load tool.

▼ Books [Introduction to Selenium Practice-Continuous Browser Testing with Automation](https://www.amazon.co.jp/Selenium%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96] % 80-% E8% 87% AA% E5% 8B% 95% E5% 8C% 96% E3% 81% AB% E3% 82% 88% E3% 82% 8B% E7% B6% 99% E7% B6% 9A% E7% 9A% 84% E3% 81% AA% E3% 83% 96% E3% 83% A9% E3% 82% A6% E3% 82% B6% E3% 83% 86% E3% 82% B9% E3% 83% 88-WEB-PRESS-plus / dp / 4774178942)

12. Learn NoSQL

As the name suggests, let's learn about DBs that are not operated by SQL. It is a good idea to compare what is convenient and what is inconvenient compared to RDB. Comparison example of RDB and NOSQL) How about adding items? Is exclusive control possible? How is the performance? etc ▼ Website Getting Started with Dot Install Mongo (Free): https://dotinstall.com/lessons/basic_mongodb_v3

13. Learn cash

Learning

14. Learn Rest API

Learn what the Rest API is and how to implement the Rest API in Java. It will give you new insights into the roles of front (static pages) and back (dynamic pages) that you have learned so far. Also, RestFul API is not defined for data like RDB, so you can freely change the definition, but it will be easier to use if you define data using Swagger.

▼ Books [First Spring Boot-Easy Java App Development with Spring Framework]( https://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AESpring-Boot%E2%80%95 % E3% 82% B9% E3% 83% 97% E3% 83% AA% E3% 83% B3% E3% 82% B0% E3% 83% BB% E3% 83% 95% E3% 83% AC% E3 % 83% BC% E3% 83% A0% E3% 83% AF% E3% 83% BC% E3% 82% AF% E3% 81% A7% E7% B0% A1% E5% 8D% 98Java% E3% 82 % A2% E3% 83% 97% E3% 83% AA% E9% 96% 8B% E7% 99% BA-I% E3% 83% BB-BOOKS-% E4% BF% 8A% E6% 98% 8E / dp / 4777519694 / ref = sr_1_3? s = books & ie = UTF8 & qid = 1523144527 & sr = 1-3 & keywords = spring + framework) (Implementation method only)

15. Learn certification

Security checks are required when accessing the site. Let's implement the authentication function after understanding the mechanism (Basic, token, etc.) for that purpose and understanding the advantages and disadvantages of each. There are usually authentication methods within the framework. Example) Spring → Spring Security, play → play.libs.OAuth2, AdminAction

16. Learn security

Learn basic security (SQL injection) and more. Another option is to use a vulnerability check tool for diagnosis. Should I keep the top 10 basics of OWASP?

▼ Website OWASP:https://www.owasp.org/images/2/23/OWASP_Top_10-2017%28ja%29.pdf

17. Learn messaging

Learning

18. Learn search engines

Search engines (full-text search) perform more complex searches faster than RDB and NOSQL. Google and Yahoo also have their own search engine mechanisms. Here, why not use the OSS Elasticsearch to realize the suggestion function (predictive conversion). ▼ Website Qiita:https://qiita.com/nskydiving/items/1c2dc4e0b9c98d164329

19. Learn Docker

Java is "Write once, run anywhere". Works on any OS, Windows, Mac, Linux. Let's create a Docker Image so that the environment you created can be operated in other environments so that it can be set up and started automatically. Also, put the DB you have learned so far into the Docker Compose settings so that the app can run automatically.

Furthermore, if you use Jenkins or CircleCI, you should be able to build an environment more easily.

▼ Website Dot install Docker (free): https://dotinstall.com/lessons/basic_docker ▼ Books [[Revised 3rd Edition] Introduction to Jenkins Practice-Technology for Automating Build, Test, and Deployment] https://www.amazon.co.jp/%E6%94%B9%E8%A8%82%E7%AC%AC3%E7%89%88-Jenkins%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-%E2%80%95%E2%80%95%E3%83%93%E3%83%AB%E3%83%89%E3%83%BB%E3%83%86%E3%82%B9%E3%83%88%E3%83%BB%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%82%92%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%99%E3%82%8B%E6%8A%80%E8%A1%93-PRESS-plus/dp/4774189286/ref=sr_1_1?s=books&ie=UTF8&qid=1523194414&sr=1-1&keywords=Jenkins)

20. Learn Web Server

Now that I've reached this point, I think I'm using Tomcat (software to run Java Servlet) when creating and starting a website. Recent frameworks include Tomcat, so you don't have to be aware of Tomcat settings, Remember that Tomcat allows you to start your web server and manage and change port settings, JSESSIONIDs in access logs, and more. ~~ (* In the past, it was necessary to set various Tomcat context.xml and server.xml, but that era seems to have come to an end) ~~

▼ Website Introduction to Tohoho Tomcat: http://www.tohoho-web.com/ex/draft/tomcat.htm Tomcat server settings: https://thinkit.co.jp/free/article/0708/2/8 Java Road: http://www.javaroad.jp/opensource/js_tomcat12.htm

21. Learn WebSockets

Learning

22. Learn GraphQL

Learning

23. Learn Graph Database

Learning

24. Challenge BigQuery and machine learning

Learning

Recommended Posts

Send me a roadmap to becoming a full-fledged Java engineer
Send a pull request to GitHub
How to make a Java container
Kotlin Class to send to Java developers
[Java] How to create a folder
[Swift] How to send a notification
Initial introduction to Mac (Java engineer)
How to make a Java array
How to make a Java calendar Summary
Kotlin Class part.2 to send to Java developers
[Introduction to Java] How to write a Java program
How to make a Discord bot (Java)
A Java engineer compared Swift, Kotlin, and Java.
Kotlin scope functions to send to Java developers
Java: How to send values from Servlet to Servlet
How to print a Java Word document
Kotlin's Null safety to send to Java developers
A new engineer went to JJUG ~ "Java SE 10 / JDK 10 release special feature" (2018/03/26 (Monday)) ~
Kotlin functions and lambdas to send to Java developers
Two ways to start a thread in Java + @
I want to send an email in Java.
Connect to Aurora (MySQL) from a Java application
How to display a web page in Java
Code to escape a JSON string in Java
I did Java to make (a == 1 && a == 2 && a == 3) always true
Try to create a bulletin board in Java
Road to Java Engineer Part1 Introduction & Environment Construction
I wanted to make (a == 1 && a == 2 && a == 3) true in Java
How to convert a solidity contract to a Java contract class
A story about trying to operate JAVA File
Getting started with Kotlin to send to Java developers
Java adds a text box to PowerPoint slides
I tried to break a block with java (1)