As a native Android developer, went through the baptism of Java, Kotlin; Learn about cross-platform frameworks like Cordova, ReactNative, Weex, and Flutter in a * cool atmosphere; Later, under the slogan of “big front-end”, it extended to the learning of front-end frameworks such as React and Vue. Finally, facing the temptation of “full stack” *, I started Java Web development with SpringBoot. See the Android programmer’s summary of 2018

Android development as the capital of “settle down”, in the face of today’s “mobile cool” atmosphere, we are calm in the “vertical learning” at the same time, sometimes also hope to expand their ability horizontally, and Android development has congenital advantages in this aspect, Java and a good open atmosphere give us more possibilities.

This article mainly describes my learning choices in Java Web development, hoping to help you in some aspects, here is not the transformation of Amway, “full stack” is not an absolute positive term, everyone has different definitions of the category of “full stack”. But knowing that, at least you’ll be able to fight more forcefully against the “backend” on demand, right? 🌹 🐔

The background,

It’s good for digestion

Here is a quick background of Java Web development, as Android development, in learning background development is undoubtedly using Java as a stepping stone is a lower cost choice, Java Web and Android mutual post transfer is also common.

At the beginning of Java Web development, there was no clear division of the front and back ends. Today, there are still projects that do not separate the front and back ends. But over time, from the consideration of project management and maintenance, development responsibilities and efficiency, there is a gradual division of the front and back end responsibilities.

For Android development, the back end is colloquially written for restful interfaces.

The development of Java Web is as follows: from the MVC pattern of Struts2, to the Inversion of Control (IOC) and aspect programming (AOP) of Spring, to the Whole Family bucket of SpringBoot, the threshold is also gradually lowered. For those who are interested in this process, they can learn about it by themselves. The following process will mainly praise the Spring family.

Spring is not a new concept to Android development. One of its core concepts is IOC (also known as dependency injection) and using logic and Dagger, So Spring In Action (4th Edition) is a great book to start with for Android developers.

Second, framework selection

Spring Boot The whole family bucket in the bowl

There are frameworks in the Java Web world just as there are frameworks in Android, and while some of my predecessors advised not to start with learning frameworks, I prefer to start with usability: Pick a mainstream framework to learn about, pick an open source project to practice on, then finish a small project to get stuck, and finally dive into the interesting points. After all, everything is difficult at the beginning, and if it’s too boring at the beginning, it’s hard to control.

In the study of Spring on and off, I mainly contacted SSH (once) and SSM (now) two combined development frameworks, as to how to choose, you know.

  • SSH: Struts2 as controller + Spring management component + Hibernate in charge of database.
  • SSM: SpringMVC as controller + Spring management component + MyBatis in charge of database.

As an Android developer, if you have used or understood Dagger, it is not difficult to understand and use Spring. Use annotations such as @Contorller, @Service, @Configuration to indicate the purpose of a class, and use @AutoWired to inject usage.

If Spring is a container framework for injecting and managing entities like Dagger, then SpringMVC is a Web framework added on top of Spring functionality.

For Android development, MVC is certainly not unfamiliar, in fact, background developers usually write a Controller to provide a Model for you. Hibernate and MyBatis are both persistence layer frameworks, which belong to ORM frameworks that can facilitate the use of databases such as MySql.

If Spring and SpringMVC are friendly choices for Android developers, Spring Boot is your “green channel.” Spring Boot is also known as the Whole family bucket because it brings together a wide variety of commonly used frameworks, lowers the bar for Spring development, and simplifies the configuration process, and the Jetbrains family supports it!

So at this stage, I personally think Spring, SpringMVC and SpringBoot are good choices for Android developers to learn how to get started with Java Web.

First understand the Spring design pattern, then learn the development of SpringMVC Service/Controller, and finally use SpringBoot to quickly build Web projects. This is just the beginning. There are more things to come:

  • Database learning: mysql, mongodb
  • Persistence layer framework learning: Hibernate, Mybatis
  • Cache framework learning: Ehcache, Redis
  • Learning security authority framework: Shiro, Spring Security
  • Distributed framework learning: Dubbo, Spring Cloud
  • Proxy service: Nginx

After all, there is always a way to learn, or at least not to be ignorant.

3. Development tool selection

“No IDE, text editor” has always been the standard, but “lazy” makes me better, so a good IDE can make people more comfortable transition to the beginning.

Android development also has an advantage in IDE choices, because Android Studio was originally developed based on Jetbrains’ IDEA Commutity Edition.

We choose IntelliJ IDEA in Jetbrains as a development tool. For Android developers, shortcut keys, interface UI, debugging mode, etc., can achieve “seamless switch” and reduce learning costs. As for Eclipse, it hasn’t been on my radar for a long, long time.

IntelliJ IDEA support for SpringBoot and Maven is also excellent.

Four, the last

When I am learning new things, I often face some choice problems, especially when I want to learn Web service development. After years of development, a hundred flowers bloom in the background service ecosystem: PHP, Java, Golang, Phython, NodeJS and so on, it is easy for people to hesitate at the moment of the door. (PHP is the best, after all)

Aside from business needs and environmental constraints, I personally prefer low-cost expansion. All things are difficult before they are easy. Not everyone has the insistence of “passing through three doors but not getting in”, and it is a relatively stable technology appreciation to derive other abilities from what we have mastered at this stage. “Bite off more than you can chew”, first depth, and then width, hope to encourage each other!

This article is probably not a dry article, but more a suggestion for Android developers to choose from when learning web development. You never know when you’ll need it.

Android Programmer’s Summary of 2018