Доступные курсы

Система уровня Middle Java Developer компании О!

Система уровня Middle Java Developer компании О!

Цель системы уровня Middle Java Developer компании О! это за три базовых месяца трансформировать специалиста уровня Junior Java Developer до уровня Middle Java Developer.

Трансформация — это глагол, при котором требуется не процесс улучшения существующих навыков специалиста, а глагол базового изменения специалиста. Для примера можно привести трансформацию гусеницы в бабочку или трансформация объекта String в объект Person

Необходимо выполнить на 90% все требования для получения уровня Middle Java Developer.

Вероятность с первой попытки выйти на уровень Middle Java Developer компании О! составляет 45%.

При неуспешном прохождении необходимых этапов процесс повторяется с начала первого месяца.


Боевые проекты / Intern Labs 5.0

Боевые проекты / Intern Labs 5.0

08 января 2024 года Стажеры проекта Intern Labs 5.0 - Java Backend Developer! и Стажеры Intern Labs 1.0 QA приступили к разработке Боевых проектов. Сформированы 7 команды, которые на протяжении трех месяц предоставят готовые и действующие системы Vue.js и Spring Java.


Боевые проекты / Intern Labs 4.0

Боевые проекты / Intern Labs 4.0

07 октября 2022 года Стажеры проекта Intern Labs 4.0 приступили к разработке Боевых проектов / Intern Labs 4.0 – Mobile Developers компании О!. Сформированы 3 команды, которые на протяжении трех месяц предоставят готовые и действующие системы Software Mobile Development Solution. В качестве инструментов для разработки используются две технологии:


- Swift for iOS

- Kotlin for Android

Список названия проектов:

- O!Market Swift/iOS 

- O!Terminal Swift/iOS

- O!Market Kotlin/Android

YouTube записи занятий / Первый, второй и третий месяцы / Intern Labs 4.0 /

YouTube записи занятий / Первый, второй и третий месяцы / Intern Labs 4.0 /

I. Разработать базовые приложения:
   1. Calculator MVC Pattern
   2. Notepad MVC Pattern / Файловый редактор
   3. Sokoban Game MVC Pattern / Игра Sokoban


The Swift Language. The Complete Reference. Intern Labs 4.0

The Swift Language. The Complete Reference. Intern Labs 4.0

Swift — открытый мультипарадигмальный компилируемый язык программирования общего назначения. 

Создан компанией Apple в первую очередь для разработчиков iOS и macOS.

Swift работает с фреймворками Cocoa и Cocoa Touch и совместим с основной кодовой базой Apple, написанной на Objective-C.

Swift задумывался как более лёгкий для чтения и устойчивый к ошибкам программиста язык, нежели предшествовавший ему Objective-C.

Программы на Swift компилируются при помощи LLVM, входящей в интегрированную среду разработки Xcode 11 и выше.

The Kotlin Language. The Complete Reference. Intern Labs 4.0

The Kotlin Language. The Complete Reference. Intern Labs 4.0

Kotlin-разработчик должен обладать уверенными знаниями объектно-ориентированного программирования, уметь писать простой, читабельный код с применением шаблонов проектирования. 
Kotlin имеет множество библиотек и фреймворков. Разработчикам нужно знать их не только на уровне использования, но и понимать, как эти библиотеки и фреймворки устроены внутри.
Необходимость и обязательность знания базового уровня синтаксиса языка Kotlin основана на следующих важных этапах:
I.    Data Types, Variables, and Arrays
II.   Operators
III.  Control Statements
IV.  Introducing Classes
VI.  A Closer Look at Methods and Classes
VII. Inheritance
VIII. Packages and Interfaces
IX.   Exception Handling
X.    Multithreaded Programming

Swift Language

Swift Language

Swift — открытый мультипарадигмальный компилируемый язык программирования общего назначения. 
Создан компанией Apple в первую очередь для разработчиков iOS и macOS. Swift работает с фреймворками Cocoa и Cocoa Touch и совместим с основной кодовой базой Apple, написанной на Objective-C. 
Swift задумывался как более лёгкий для чтения и устойчивый к ошибкам программиста язык, нежели предшествовавший ему Objective-C. Программы на Swift компилируются при помощи LLVM, входящей в интегрированную среду разработки Xcode 6 и выше. Swift может использовать рантайм Objective-C, что делает возможным использование обоих языков (а также С) в рамках одной программы

Kotlin Language

Kotlin Language

Kotlin — статически типизированный, объектно-ориентированный язык программирования, работающий поверх Java Virtual Machine и разрабатываемый компанией JetBrains. Также компилируется в JavaScript и в исполняемый код ряда платформ через инфраструктуру LLVM. Язык назван в честь острова Котлин в Финском заливе, на котором расположен город Кронштадт.

Vue 3 Authentication with JWT, Vuex, Axios and Vue Router

Vue 3 Authentication with JWT, Vuex, Axios and Vue Router

In this tutorial, we’re gonna build Vue 3 Authentication & Authorization example with JWT, Vuex, Axios, Vue Router and VeeValidate. I will show you:

  • JWT Authentication Flow for User Signup & User Login
  • Project Structure for Vue 3 Authentication with Vuex 4 & Vue Router 4
  • How to define Vuex Authentication module
  • Creating Vue 3 Authentication Components with Vuex Store
  • Reactive Form Validation with VeeValidate 4
  • Vue 3 Components for accessing protected Resources
  • How to add a dynamic Navigation Bar to Vue 3 App

Spring Data Pageable with custom query in Spring Boot

Spring Data Pageable with custom query in Spring Boot

In this tutorial, I will show you how to implement Spring Boot Pagination using Spring Data Pageable with custom query.

public interface Pageable {
  int getPageNumber();
  int getPageSize();
  long getOffset();
  Sort getSort();
  Pageable next();
  Pageable previousOrFirst();
  Pageable first();
  boolean hasPrevious();
  ...
}

So when we want to make paging and sorting (with or without filter) in...


JPA/Hibernate One To One unidirectional mapping in Spring Boot

JPA/Hibernate One To One unidirectional mapping in Spring Boot

In this tutorial, I will show you how to implement Spring JPA One-To-One unidirectional mapping with Hibernate in a Spring Boot example using @OneToOne annotation. You’ll know: How to configure Spring Data, JPA, Hibernate to work with Database How to define Data Models and Repository interfaces for JPA One-To-One relationship Way to use Spring JPA to interact with Database for One-To-One association Way to create Spring Rest Controller to process HTTP requests.
jpa-hibernate-one-to-one

Architecture Components

Architecture Components

Android Architecture Components - это набор решений от Google, которые помогут вам в разработке приложений.

Урок 1. Lifecycle
Урок 2. LiveData
Урок 3. LiveData. Дополнительные возможности
Урок 4. ViewModel
Урок 5. Room. Основы
Урок 6. Room. Entity
Урок 7. Room. Insert, Update, Delete, Transaction
Урок 8. Room. Query
Урок 9. Room. RxJava
Урок 10. Room. Запрос из нескольких таблиц. Relation
Урок 11. Room. Type converter
Урок 12. Room. Миграция версий базы данных
Урок 13. Room. Тестирование
Урок 14. Paging Library. Основы
Урок 15. Paging Library. PagedList и DataSource. Placeholders.
Урок 16. Paging Library. LivePagedListBuilder. BoundaryCallback.
Урок 17. Paging Library. Виды DataSource
Урок 18. Android Data Binding. Основы
Урок 19. Android Data Binding. Код в layout. Доступ к View
Урок 20. Android Data Binding. Обработка событий
Урок 21. Android Data Binding. Observable поля. Двусторонний биндинг.
Урок 22. Android Data Binding. Adapter. Conversion.
Урок 23. Android Data Binding. Использование с include, ViewStub и RecyclerView.
Урок 24. Navigation Architecture Component. Введение
Урок 25. Navigation. Передача данных. Type-safe аргументы.
Урок 26. Navigation. Параметры навигации
Урок 27. Navigation. NavigationUI.
Урок 28. Navigation. Вложенный граф. Global Action. Deep Link.
Урок 29. WorkManager. Введение
Урок 30. WorkManager. Критерии запуска задачи.
Урок 31. WorkManager. Последовательность выполнения задач.
Урок 32. WorkManager. Передача и получение данных
Урок 33. Практика. О чем это будет.
Урок 34. Практика. TodoApp. Список задач.
Урок 35. Практика. TodoApp. Просмотр задачи

Kotlin Coroutines Android

Kotlin Coroutines Android

Корутины — это отличный функционал, доступный в языке Kotlin.
Корутины — это облегчённые потоки. Облегчённый поток означает, что он не привязан к нативному потоку, поэтому он не требует переключения контекста на процессор, поэтому он быстрее.

Урок 1. Корутины. Введение.
Урок 2. Корутины. Continuation
Урок 3. Корутины. Suspend функции
Урок 4. Корутины. Continuation, возврат значений.
Урок 5. Корутины. Suspend функции изнутри
Урок 6. Корутины. Job
Урок 7. Корутины. Scope
Урок 8. Корутины. Отмена
Урок 9. Корутины. Билдеры launch и async.
Урок 10. Корутины. Context
Урок 11. Корутины. Dispatcher
Урок 12. Корутины. Связь между родительской и дочерней корутиной
Урок 13. Корутины. Обработка исключений
Урок 14. Корутины. Обработка исключений. Вложенные корутины
Урок 15. Корутины. Обработка исключений. Async, suspend.
Урок 16. Корутины. Отмена - это ошибка.
Урок 17. Корутины. coroutineScope, supervisorScope, withContext, runBlocking.
Урок 18. Корутины. Каналы
Урок 19. Корутины. Flow. Введение
Урок 20. Корутины. Flow. Билдеры и простые операторы.
Урок 21. Корутины. Flow. Операторы channelFlow, flowOn, buffer, produceIn.
Урок 22. Корутины. Flow. Ошибка, отмена, повтор.
Урок 23. Корутины. Практика. Scope, LiveData.
Урок 24. Корутины. Практика. Retrofit.
Урок 25. Корутины. Практика. Room
Урок 26. Корутины. Практика. Примеры использования

Производительность Android приложений

Производительность Android приложений

Одно и то же Андроид приложения можно создать множеством разных способов. В зависимости от используемого подхода, с виду одинаковые программы могут потреблять разное количество ресурсов смартфона. Другими словами у них будет разная производительность. Самый банальный пример, это использование RecyclerView вместо ScrollView когда необходимо.

Урок 1. Введение
Урок 2. Советы по производительности
Урок 3. StrictMode
Урок 4. Память
Урок 5. Memory Profiler. Allocation.
Урок 6. Memory Profiler. Dump
Урок 7. Утечки памяти. Что это такое и как 
Урок 8. Утечки памяти. Как понять, что она есть, и как ее найти.
Урок 9. Утечки памяти. LeakCanary.
Урок 10. CPU Profiler
Урок 11. CPU Profiler. Стек методов
Урок 12. CPU Profiler. Режимы записи стека методов
Урок 13. Network profiler.
Урок 14. Energy profiler
Урок 15. Кадр
Урок 16. APK Analyzer
Урок 17. Systrace

Android Тестирование

Android Тестирование

Полезный инструмент для каждого Android разработчика. Избавьтесь от ошибок в ваших приложениях.


Урок 1. Зачем нужны тесты и как они работают
Урок 2. Как создать и запустить локальный тест
Урок 3. JUnit4, assert методы.
Урок 4. Mock объекты
Урок 5. Mockito
Урок 6. Espresso
Урок 7. Espresso. ViewMatcher, ViewAction, ViewAssertion
Урок 8. Espresso. AdapterView и RecyclerView.
Урок 9. Espresso. IdlingResource.
Урок 10. Espresso. ActivityTestRule и IntentsTestRule
Урок 11. JUnit. Rules.
Урок 12. JUnit. Exceptions, Parameterized, Timeout, Ignored.

RxJava

RxJava

Мощный и гибкий инструмент для удобной реализации повседневных задач
Предназначен для знакомства начинающего реактивного программиста с мощью библиотеки RxJava ˜— реализации принципов реактивного программирования для JVM.

Урок 1. Основы RxJava. Observable и Observer.
Урок 2. Операторы. Action
Урок 3. Subscription. Создаем свой Observable.
Урок 4. Hot and Сold Observable. ConnectableObservable
Урок 5. Subject
Урок 6. subscribeOn и observeOn
Урок 7. Обработка ошибок
Урок 8. Операторы объединения
Урок 9. Retrofit 2. Retrolambda.
Урок 10. Backpressure
Урок 11. RxJava 2
Урок 12. RxBinding
Урок 13. Тестирование. RxJavaPlugins.

Dagger 2

Dagger 2

Отличный помощник в реализации паттерна Dependency Injection. Поможет сделать ваш код чистым и снизить зависимости между объектами. 

Урок 1. Введение
Урок 2. Дополнительные возможности
Урок 3. SubComponent и Scope
Урок 4. Producers
Урок 5. Builder
Урок 6. AndroidInjection

Android

Android

Android - Kotlin and Java

Android — операционная система для смартфонов, планшетов, электронных книг, цифровых проигрывателей, наручных часов, фитнес-браслетов, игровых приставок, ноутбуков, нетбуков, смартбуков, очков Google Glass, телевизоров и других устройств (в 2015 году появилась поддержка автомобильных развлекательных систем и бытовых роботов).

Основана на ядре Linux и собственной реализации виртуальной машины Java от Google. Изначально разрабатывалась компанией Android, Inc., которую затем купила Google. Впоследствии Google инициировала создание альянса Open Handset Alliance (OHA), который сейчас занимается поддержкой и дальнейшим развитием платформы. Android позволяет создавать Java-приложения, управляющие устройством через разработанные Google библиотеки. Android Native Development Kit позволяет портировать библиотеки и компоненты приложений, написанные на Си и других языках.

Боевые проекты  / Intern Labs 3.0

Боевые проекты / Intern Labs 3.0

10 января 2022 года Стажеры проекта Intern Labs 3.0 приступили к разработке Боевых проектов / Intern Labs 3.0 – Backend Developers компании О!. Сформированы 4 команды, которые на протяжении трех месяц предоставят готовые и действующие системы Software Development Solution. В качестве инструментов для разработки используются две технологии:

- Vue.js / Frontend Development

- Spring Java / Backend Development

Список названия проектов:

- Merchant Platform Payment

- Nur Forms Platform

- Subscriber Master Data Management Platform

- Target Platform


Третий месяц / Intern Labs 3.0

Третий месяц / Intern Labs 3.0

Assignment / Распределение - курс предназначен для слушателей с хорошим опытом программирования на Java. Позади два месяца работы в проекте Intern Labs 3.0 – Backend Developers компании О!. Анализ теоритических знаний на Java и завершение Desktop Applications - практических проектов – Calculator MVC Pattern / Notepad MVC pattern / Sokoban Game MVC Pattern. Получение доступа к Боевым проектам компании О!, направленных на Backend Software Development.

Первая неделя
Lesson1 - Annotations (Metadata)
Lesson2 - СУБД / DBMS Часть 1 (виды субд / популярные субд / no sql)
Lesson3 - Generics. Часть 1

Вторая неделя
Lesson4 - CI/CD (Devops) / Sonar / Qube
Lesson5 - Generics. Часть 2
Lesson6 - JDBC Database Access in Java

Третья неделя
Lesson7 - СУБД / DBMS Часть 2 / SQL
Lesson8 - Анализ проекта Sokoban Game MVC Pattern
Lesson9 - Экзамен / Basic knowledge of Java

Четвертая неделя
Lesson10 - Подведение итогов
Lesson11 - Анализ и оценка задачи (коммуникация с заказчиком)
Lesson12 - ...

Второй месяц / Intern Labs 3.0

Второй месяц / Intern Labs 3.0

Transformation - курс предназначен для слушателей с средним опытом программирования. Слушатели продолжают получать сведения о концепциях объектно-ориентированного программирования, терминологии и синтаксисе, а также о пошаговые методы создания сложной компьютерной игры программы на Java.


1. Разработать двухмерную игру Sokoban Game MVC Pattern.

Первая неделя
Lesson1 - Пакеты и интерфейсы
Lesson2 - Практика (Basics I/O, пакеты и интерфейсы)
Lesson3 - Обработка исключений / Exception

Вторая неделя
Lesson4 - ООП / Часть 1
Lesson5 - Анализ проекта Notepad MVC Pattern
Lesson6 - Конвенции

Третья неделя
Lesson7 - Multithreaded Programming. Часть 1
Lesson8 - Работа в команде / Agile / Scrum / Kanban
Lesson9 - Multithreaded Programming. Часть 2

Четвертая неделя
Lesson10 - Практика по потокам
Lesson11 - Enumerations, Autoboxing
Lesson12 - Unix / Web servers

Первый месяц / Intern Labs 3.0

Первый месяц / Intern Labs 3.0

Этот курс предназначен для слушателей с минимальным опытом программирования. Слушатели получают вводные сведения о концепциях объектно-ориентированного программирования на Java , терминологии и синтаксисе, а также о пошаговых методах создания базовых программ на Java в ходе практических занятий.


I. Разрабатывать базовые приложения Java
    1. Calculator MVC
    2. Notepad MVC

Первая неделя
Lesson1 – JDK / File.java / CMD / Тестовый редактор
• Lesson2 – Мышление
• Lesson3 – Пять способов обработки JButton


Вторая неделя
• Lesson4 – Управляющие операторы / Сравнение типа double
• Lesson5 – Система контроля версий
• Lesson6 – Введение в классы / MPG

Третья неделя
• Lesson7 – Детальное рассмотрение классов и методов
• Lesson8 – Структуры данных. Часть I
• Lesson9 – Наследование

Четвертая неделя

  • Lesson10 – Структуры данных. Часть II (вторая)
  • Lesson11 – Практика (Классы, методы и наследование)
  • Lesson12 – Basic I/O


Vue.js  / Frontend Study

Vue.js / Frontend Study

Vue.js — JavaScript-фреймворк с открытым исходным кодом для создания пользовательских интерфейсов. Легко интегрируется в проекты с использованием других JavaScript-библиотек.

В 2013 году сотрудник Google Эван Ю (Evan You), работая над одним из проектов, пришёл к выводу, что не существует готовых решений для быстрого прототипирования сложных пользовательских интерфейсов веб-приложений: React тогда был на ранней стадии разработки, основными инструментами были такие сложные фреймворки, как AngularJS или ориентированный на MVC-архитектуру Backbone.js, не отличавшиеся простотой и ориентированные на разработку больших приложений. Для преодоления этого пробела Эван Ю начал разработку Vue.js, которая, сохраняя простоту, оказалась пригодна не только для прототипирования, но и для полноценной разработки.

Spring. Все паттерны проектирования

Spring. Все паттерны проектирования

Автор — главный редактор сайта Dineshonjava, технического блога, посвященного технологиям Java и Spring. На сайте размещены статьи на тему Java-технологий. Динеш — блогер, автор книг, c 2008 года энтузиаст Spring, сертифицированный специалист компании Pivotal (Pivotal Certified Spring Professional). Обладает более чем десятилетним опытом проектирования и разработки с использованием Java и Spring. Специализируется на работе с последней версией Spring Framework, Spring Boot, Spring Security, на создании REST API, архитектуре микросервисов, реактивном программировании, аспектно-ориентированном программировании с применением Spring, паттернах проектирования, Struts, Hibernate, веб-сервисах, Spring Batch, Cassandra, MongoDB, архитектуре веб-приложений.

The Lambdas in Java

The Lambdas in Java

Лямбда-выражение вносит новый элемент в синтаксис и оператор в язык Java. Этот новый оператор называется лямбда-оператором, или операцией "стрелка" (->). Он разделяет лямбда-выражение на две части. В левой части указываются любые параметры, требующиеся в лямбда-выражении. (Если же параметры не требуются, то они указываются пустым списком.) А в правой части находится тело лямбда-выражения, где указываются действия, выполняемые лямбда-выражением. Операция -> буквально означает "становиться" или "переходить".

The Stream API

The Stream API

Из многих новых функций, недавно добавленных в Java, две наиболее важные: лямбда-выражения и потоковый API. Описывается потоковый API. Как вы увидите, API потока разработан с учетом лямбда-выражений. Более того, потоковый API предоставляет некоторые из наиболее значительных демонстраций силы, которая лямбды переносятся на Java.

Хотя его дизайн совместим с лямбда-выражениями впечатляет, ключевым аспектом потокового API является его способность выполнять очень сложные операции, которые ищут, фильтруют, отображают или иным образом обрабатывают данные. 




javaForBeginers() - Уроки Java Spring Boot

javaForBeginers() - Уроки Java Spring Boot

Информация из внешнего источника

Собираются уроки из разных ресурсов

Security Spring

Security Spring

Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.

Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements


Features

  • Comprehensive and extensible support for both Authentication and Authorization

  • Protection against attacks like session fixation, clickjacking, cross site request forgery, etc

  • Servlet API integration

  • Optional integration with Spring Web MVC



JPA / Hibernate One to One Mapping Example with Spring Boot

JPA / Hibernate One to One Mapping Example with Spring Boot

Hibernate is the most popular Object Relational Mapping (ORM) tool for Java. It implements Java Persistence API (JPA) specifications and has a huge industry adoption.

Hibernate maps the tables in your database to the Entity classes in your application.

You can define relationships among these entities in the same way you define relationships among the tables in your database.

In this tutorial, You’ll learn how to define a one-to-one relationship between two entities using JPA and Hibernate.


How to define a bidirectional one-to-many mapping and when should you use it

How to define a bidirectional one-to-many mapping and when should you use it

The Internet is flooded with examples of bidirectional one-to-many mapping. But it’s not the best and the most efficient way to model a one-to-many relationship.

Here is the bidirectional version of the one-to-many relationship between the Post and Comment entities -


JPA / Hibernate One to Many Mapping Example with Spring Boot

JPA / Hibernate One to Many Mapping Example with Spring Boot

In this article, you’ll learn how to map a one-to-many database relationship at the object level using JPA and Hibernate.

Consider the following two tables - posts and comments of a Blog database schema where the posts table has a one-to-many relationship with the comments table -


Java Persistence / @OneToMany

Java Persistence / @OneToMany

@OneToMany

Отношение OneToMany в Java - это когда исходный объект имеет объектную переменную, которая хранит коллекцию (Collection) целевых объектов, и если эти целевые объекты имеют обратную связь с исходным объектом, это будет отношение ManyToOne.

Все отношения в Java и JPA являются однонаправленными, в том случае, если исходный объект ссылается на целевой объект, нет никакой гарантии, что целевой объект также имеет отношение к исходному объекту. Это отличается от реляционной базы данных, в которой отношения определяются посредством внешних ключей и запросов, так что обратный запрос всегда существует.



Pattern Controller Interface JPA Data Spring

Pattern Controller Interface JPA Data Spring

Принцип реализации объекта Controller через интерфейс JPA Data Access Spring.
Применяя данный шаблон, полностью абстрагируемся от Data Access Object (DAO) уровня и разработчик акцентируется на бизнес логике приложения.

FakeDAO - PostgresDao - JPA Data Access

FakeDAO - PostgresDao - JPA Data Access

import com.example.demo.model.PersonEntity;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
public interface PersonServiceJpaData {
    List findAllPeople();
    Optional selectPersonById(UUID id);
    int deletePersonById(UUID id);
    int insertNewPerson(PersonEntity person);
    int updatePersonById(UUID id, PersonEntity person);
}
import com.example.demo.model.Person;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
public interface PersonServiceFakeOrPostgres {
    List getAllPeople();
    Optional getPersonById(UUID id);
    int deletePersonById(UUID id);
    int insertNewPerson(Person person);
    int updatePersonById(UUID id, Person person);
}

Spring Boot 2.0 Example from Amigoscode

Spring Boot 2.0 Example from Amigoscode

Spring Boot 2.1 is an amazing framework for building java applications. 
It's awesome for enterprise and using it on your own projects. 
➡️Free Spring Boot course: Course here: https://bit.ly/2E9tTb4 
➡️Diagram: https://bit.ly/2EdfsDg 
In this crash course, you will learn how to build an API for clients to consume. 
Topics covered:
✅HTTP: GET, POST, PUT & DELETE 
✅Build an in-memory database 
✅How to structure applications using N Tier Architecture 
✅Auto wire beans with dependency injections 
✅Program to interfaces 
✅Run .jar file so that you can deploy to any server

Spring Boot Project

Spring Boot Project

Информация из внешнего источника

Software Developers O! with Spring Java Framework

Software Developers O! with Spring Java Framework

Мы умеем программировать.
Мы используем компьютерный язык Java как инструмент.
Мы изучаем и применяем библиотеки технологии Java.
Мы хотим контролировать поведение наших программных продуктов.

package kg.nurtelecom.projects.*;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class O!'sApplicationProjects {
    public static void main(String[] args) {
        SpringApplication.run(O!'sApplicationProjects.class, args);
    }
}

Разработчики компании О!

Analyze X9

Analyze X9

O! Server Example - 100% Java Pure Web Server

import java.net.ServerSocket;
import java.net.Socket;
import java.io.IOException;

public class OServer {

    private ServerSocket serverSocket;
    private boolean flagSocket;
    private final Object object;

    public OServer(int port) {
      object = new Object();
      try {
	serverSocket = new ServerSocket(port);
      } catch(IOException ioe) {
	System.out.println(ioe);
      }
      flagSocket = true;
    }

    public void runServer() {
      while(flagSocket) {
	try {
	   synchronized(object) {
	     Socket clientSocket = serverSocket.accept();
	     WebClient webClient = new WebClient(clientSocket);
	     webClient.start();
	   }
	 } catch(IOException ioe) {
	   System.out.println(ioe);
	 }
     }//while()
   }
}

Analyze X8

Analyze X8

Custom Networking into Java!


Networking Basics

Computers running on the Internet communicate to each other using either the Transmission Control Protocol (TCP) or the User Datagram Protocol (UDP), as this diagram illustrates:

Example of network communication.

When you write Java programs that communicate over the network, you are programming at the application layer. Typically, you don't need to concern yourself with the TCP and UDP layers. Instead, you can use the classes in the java.net package. These classes provide system-independent network communication. However, to decide which Java classes your programs should use, you do need to understand how TCP and UDP differ.


Analyze I

Analyze I

Тест I

1. Типы данных
b. Вещественные (действительные) числа или число с плавающей точкой.
c. Символы.
d. Логические значения.  
2. Переменные
3. Арифметические операции
4. Управляющие операторы
5. Операторы перехода
6. Массивы – одномерные и двухмерные
a. Целые числа (Integers).

Тест I

Analyze II

Analyze II

Тест II

1. Основные принципы ООП
2. Класс
3. Объект
4. Команды
5. Метод
6. Конструктор
7. Параметр
8. Аргумент
9. Ключевое слово this
10. Ключевое слово null
11. Структура класса.
12. finalize()
13. Вложенные классы
14. MVC
15. Ссылки

Тест II

 Analyze III

Analyze III

Тест III

1. Overloading Methods
2. Overloading Constructors
3. Using Object as Parameters
4. Argument Passing
5. Return Objects
6. Recursion
7. Access Control
8. Understanding static
9. Understanding final
10. Nested and Inner Classes
11. Variable-Length Arguments

Тест III

Analyze IV

Analyze IV

Этот тест подготовлен на английском языке.
Необходимо знать на уровне чтения и понимания кода на английском языке для разработчика ПО.

Тест IV


1. Inheritance Basics
2. A Superclass Variable Can Reference a Subclass Object
3. Using super
a. Using super to Call Superclass Constructors
b. A Second Use for super
c. When Constructors Are Called
4. Method Overriding
5. Using Abstract Classes
6. Using final with Inheritance
a. Using final to Prevent Overriding
b. Using final to Prevent Inheritance
7. The Object Class

Тест IV

Analyze V

Analyze V

Тест V

1. Defining a Package
2. CLASSPATH
3. Access Protection
4. Importing Packages
5. Interfaces
6. Accessing Implementations Through Interface References
7. Variables in Interfaces
8. Interfaces Can Be Extended
9. Default Interface Methods
10. Multiple Inheritance Issues
11. Annotation Basics

Тест V

Analyze X5

Analyze X5

Java DataBase Connectivity

JDBC (Java DataBase Connectivity) - комплекс программных интерфейсов (API), которые позволяют работать с базой данных: выполнять запросы, изменять данные, получать метаданные и т.д.

JDBC полностью независим от платформы и базы данных, благодаря механизму драйверов. JDBC драйвер - набор классов, которые реализуют интерфейсы JDBC низкоуровневого доступа к базе данных. JDBC драйвер поставляется разработчиками соответствующей СУБД.

Преимуществами JDBC считают:

  • Лёгкость разработки: разработчик может не знать специфики базы данных, с которой работает
  • Код практически не меняется, если компания переходит на другую базу данных (количество изменений зависит исключительно от различий между диалектами SQL)
  • Не нужно устанавливать громоздкую клиентскую программу
  • К любой базе можно подсоединиться через легко описываемый URL

Analyze X6

Analyze X6

JDBC and Hibernate (JPA)

Hibernate — реализация спецификации JPA (Java Persistence API — спецификация API Java EE), предназначенная для решения задач объектно-реляционного отображения (ORM).
Целью Hibernate является освобождение разработчика от значительного объёма сравнительно низкоуровневого программирования при работе в объектно-ориентированных средствах в реляционной базе данных. Разработчик может использовать Hibernate как в процессе проектирования системы классов и таблиц «с нуля», так и для работы с уже существующей базой данных.
Библиотека не только решает задачу связи классов Java с таблицами базы данных (и типов данных Java с типами данных SQL), но и также предоставляет средства для автоматической генерации и обновления набора таблиц, построения запросов и обработки полученных данных. Hibernate автоматизирует генерацию SQL-запросов и освобождает разработчика от ручной обработки результирующего набора данных и преобразования объектов, максимально облегчая перенос (портирование) приложения на любые базы данных SQL.

Analyze VI

Analyze VI

Тест VI

1. Exception-Handling Fundamentals
2. Exception Types
3. throw ThrowableInstance, throws and finally
4. Creating Your Own Exception Subclasses
5. Three Recently Added Exception Features
6. try (resource-specification) { 
// use the resource 
}
7. The Java Thread Model
8. Creating a Thread
9. Creating Multiple Threads
10. Using isAlive( ) and join( )
11. Synchronization
a. Using Synchronized Methods
b. The synchronized Statement
12. Interthread Communication
13. Deadlock
14. Suspending, Resuming, and Stopping Threads
15. Obtaining A Thread’s State
16. Generics

Тест VI

Analyze VII

Analyze VII

Тест VII

1.    Проверка алгоритмического мышления
2.    Проверочные вопросы из «Тест I»
3.    Проверочные вопросы из «Тест II»
4.    Проверочные вопросы из «Тест III»
5.    Проверочные вопросы из «Тест IV»

Тест VII


Analyze VIII

Analyze VIII

Тест VIII

1.    Проверка алгоритмического мышления
2.    Проверочные вопросы из «Тест V»
3.    Проверочные вопросы из «Тест VI»

Тест VIII

Analyze IX

Analyze IX

The Java Library

  • String Handling
  • java.lang
  • Lambda Expressions


Analyze X

Analyze X

The Java Library

Class Creation Patterns

Структура данных Java

Collections Framework

Начинается рассмотрение классов и интерфейсов, определенных в пакет jаvа.util. Этот важный пакет предлагает большой выбор классов и интерфейсов, поддерживающих обширный ряд функциональных возможностей. В частности, в пакет java.util входят классы, создающие псевдослучайные числа, управляющие датой и временем, просмотром событий, манипулирующие наборами битов, выполняющие синтаксический анализ символьных строк и обрабатывающие форматированные данные. В пакет jаvа.util входит также одна из самых эффективных подсистем Java - каркас коллекций Collections Framework. Этот каркас представляет собой сложную иерархию интерфейсов и классов, реализующих современную технологию управления группами объектов. Он заслуживает пристального внимания всех программирующих на Java. Начиная с версии JDK 9, пакет java.util входит в состав модуля java. base.


Analyze XI

Analyze XI

The Java Library

Equals Object
Next Collections Framework


В продолжении темы Collections Framework - это классы коллекций. Когда представлены и изучены интерфейсы коллекций, можно приступить к рассмотрению стандартных классов, которые их реализуют. Одни из этих классов предоставляют полную реализацию соответствующих интерфейсов и могут применяться без изменений. Другие являются абстрактными, предоставляя только шаблонные реализации соответствующих интерфейсов, которые используются в качестве отправной точки для создания конкретных коллекций. Как правило, классы коллекций не синхронизированы, но если требуется, то можно получить их синхронизированные варианты.




Analyze XII

Analyze XII

The Java Library

Enumerations

java.util


Enumeration Fundamentals
Enumerations Versions of Java prior to JDK 5 lacked one feature that many programmers felt was needed: enumerations. In its simplest form, an enumeration is a list of named constants. Although Java offered other features that provide somewhat similar functionality, such as final variables, many programmers still missed the conceptual purity of enumerations— especially because enumerations are supported by many other commonly used languages. Beginning with JDK 5, enumerations were added to the Java language, and they are now an integral and widely used part of Java. In their simplest form, Java enumerations appear similar to enumerations in other languages. However, this similarity may be only skin deep because, in Java, an enumeration defines a class type. By making enumerations into classes, the capabilities of the enumeration are greatly expanded. For example, in Java, an enumeration can have constructors, methods, and instance variables. Therefore, although enumerations were several years in the making, Java’s rich implementation made them well worth the wait.
Рассмотрение пакета java.util и следующих классов:
StringTokenizer
Locale
Random
TimerTask
Timer
Date
DateFormat
NumberFormat

Analyze X3

Analyze X3

java.io

Reliable Source Code


I/O Streams

An I/O Stream represents an input source or an output destination. A stream can represent many different kinds of sources and destinations, including disk files, devices, other programs, and memory arrays.

Streams support many different kinds of data, including simple bytes, primitive data types, localized characters, and objects. Some streams simply pass on data; others manipulate and transform the data in useful ways.

No matter how they work internally, all streams present the same simple model to programs that use them: A stream is a sequence of data. A program uses an input stream to read data from a source, one item at a time:

Reading information into a program.

Reading information into a program.

A program uses an output stream to write data to a destination, one item at time:

Writing information from a program.

Writing information from a program.

In this lesson, we'll see streams that can handle all kinds of data, from primitive values to advanced objects.

The data source and data destination pictured above can be anything that holds, generates, or consumes data. Obviously this includes disk files, but a source or destination can also be another program, a peripheral device, a network socket, or an array.



Analyze X4

Analyze X4


Сериализация

Сериализация - это процесс записи состояния объектов в поток вывода байтов. Она оказывается удобной в том случае, когда требуется сохранить состояние прикладной программы в таком месте постоянного хранения, как файл. В дальнейшем эти объекты можно восстановить в процессе десериализации.

Сериализация также требуется для реализации удаленного вызова методов (Remote Method Invocation - RMI). Механизм RMI позволяет объекту Java на одной машине обращаться к методу объекта Java на другой машине. Объект может быть предоставлен в виде аргумента этого удаленного метода. Передающая машина сериализирует и посылает объект, а принимающая машина десериализует его.

Допустим, что сериализируемый объект ссылается на объекты, которые, в свою очередь, ссылаются на какие-нибудь другие объекты. Такой ряд объектов и отношений между ними образует направленный граф, где могут присутствовать и циклические ссылки. Иными словами, объект Х может содержать ссылку на объект У, а объект У - обратную ссылку на объект Х. Объекты могут также содержать ссылки на самих себя. Для правильного разрешения подобных ситуаций и предназначены средства сериализации и десериализации объектов. Если попытаться сериализировать объект, находящийся на вершине направленного графа, то все прочие объекты, на которые делаются ссылки, также будут рекурсивно найдены и сериализированы. Аналогичным образом все эти объекты и их ссылки правильно восстанавливаются в процессе десериализации. Ниже делается краткий обзор интерфейсов и классов, поддерживающих сериализацию.