The course "Development in Java" from Mail.Ru Group on the channel Tehnostrim

    This spring we posted on the channel Technostream recording course on Java . For several semesters in a row, it has been read as part of the Tehnosphere educational project , implemented by the Mail.Ru Group together with Moscow State University. M. V. Lomonosov. The course includes all the topics needed by a novice developer in the Java world. The authors do not go into the details of the syntax, but immediately take on practical tasks: developing a game with a console interface and a functional chat. At the end of the course, you’ll learn frequent questions from junior and middle Java-developer interviews.

    The lecture notes and course materials are free and available to anyone.

    Most homework can be done and checked in the course repository.

    For whom

    It is assumed that students did not come across Java, but are familiar with any modern programming language (JS / Python / C # / C / C ++) and the basics of OOP.


    The course consists of 3 parts, includes 13 lectures and 1 hakaton. Duration of lectures - 1-2 hours.

    Course content

    Part 1. Introduction to Java Development

    Lecture 1. Java intro 1
    In the first lecture you will be briefly acquainted with the syntax of the language and understand HelloWorld. The course is built around Github, so at the very first lesson you will learn how to work with Git, build a project using gradle and make a pull request to Github.

    Lecture 2. Java intro 2
    Introduction to the object model of the language.

    Lecture 3. Generics & collections
    Introduction to collections and exceptions.

    According to the results of three lectures you will receive a task: to develop a small game with a console interface (bulls and cows). Authors advise those who take a course on Youtube to perform this task in order to deal with the material in practice. Doing your hands is not watching videos on Youtube;)

    Part 2. Web services

    Java is an industrial language that dominates the field of large web applications. In the second part you will learn how to do web-services.

    Lecture 4. Web basics
    You will learn how HTTP works and how to make HTTP requests from Curl and Java.

    Lecture 5. Spring, Threads, Annotations
    Introducing the popular Spring framework, which simplifies the development of web applications.

    In order for students to practice working with Spring, after the fifth lecture, a team hackathon will take place. For a limited time, you need to develop a chat and make it as functional as possible. If you watch the course on Youtube, you can independently make a chat and experiment with it.

    Lectures 6-7. Java + DB, Hibernate
    You will learn to work with databases. In full-time course, we raised databases for students at AWS. For those who take the course online, we recommend raising databases locally or using in-memory databases (H2).

    Part 3. Game

    You will receive an assignment to develop a client-server game Bomberman. The JS game client, created on the basis of the Meta Scala project , lies in a separate repository .

    A formal description of the interaction of game services can be found here , but a clear outline .

    Lecture 8. Full-duplex WebSocket protocol The full-duplex WebSocket protocol is
    much better for communication between a client and a multiplayer game server than HTTP. You will learn how to work with it and redo your chat, previously written on the basis of HTTP, on WebSocket. Unfortunately, there are no videos of this lecture on Youtube, but all materials are available on Github.

    Lecture 9. Game architecture
    You will understand the structure of the game and the mechanism of interaction of services.

    Part 4. Advanced Topics

    In this part, we analyze two topics that are traditionally considered advanced, but any Java developer should have basic knowledge of these topics.

    Lectures 10-11. Game threads, Practical concurrency
    In lecture 10 examples of the dangers of multi-threaded development are discussed with examples, and lecture 11 describes ways to circumvent them. Pay attention to the flow model of the game service .

    Lecture 12. Garbage collection
    You will learn how heap works and how garbage collection works. At the same time, knowledge about the structure of data structures is used to evaluate the objects' layout.

    Lecture 13. Interview questions
    The last lecture of the course is devoted to the analysis of the most popular questions at Java interviews (junior-middle developer).

    General course information

    All course materials:

    Bomberman game client:

    Telegram course channel - here you can get answers to all questions related to the course .

    Please note that at the end of some lectures there is a description of homework, and in the code of lectures there are tests. Make a pull request to the branch of the lecture. If the tests on the travis are green - you have completed the task correctly.

    DZ students enrolled in an online course are not verified. However, you can freely do pull requests to the project and see if the travis tests pass successfully. In addition, any questions on the course you can ask in the chat. Authors appreciate feedback, especially in the form of pull requests with suggestions and corrections.

    The authors

    Alexander Pomosov, Senior Engineer at Alibaba

    Sergey Rybalkin, Principal Engineer at Alibaba

    Recall: the course is available to everyone on our Tekhnostim educational channel . You can chat with other participants and ask questions to teachers in the comments under the course playlist and in a chat in Telegram .

    Programming is engineering, much more open to experimentation than other areas of engineering. Make your project, experiment with it, and you will get not only experience, but also a lot of fun!

    Also popular now: