Как программисту перейти с языка 1С: Предприятие на Java
Зачем это надо ? - Самые большие зарплаты программистов на Java и JavaScript.
На 1С зарплата сеньора 150 тысяч руб. в месяц (максимум 200), я на яве уже 250 тысяч руб. (максимум 300). Разработка на ява похожа по смыслу на 1С, поэтому 1С-нику лучше туда.
JavaScript предназначен в основном для рисования форм в веб-браузере, что для 1С-ника вообще не является работой, т.к. в 1С формы рисуются автоматически сами собой. Есть ещё много других языков программирования редких и специализированных, имеющие мало вакансий, поэтому неинтересные.
Что можно сделать на яве:
- backend для корпоративных сайтов, например аналогично как в 1С после нажатие на кнопку "Записать" куда-то что-то записывается, или отправляется емайл или т.п., это и есть бакенд. Для обычных небольших сайтов больше подходит язык php, на котором легче делать то же самое, но он не подходит для крупных сайтов т.к. не имеющий строгой типизации язык быстро превращается в «говнокод», а также там нет масштабируемости, мнгопоточности и др.
- frontend совместно с JavaScript – рисование вебформ, с кнопками и др., изменение их размеров, скрытие и др. Редко используется т.к. легче на JavaScript без Java
- приложения для десктопных компьютеров – редко используется т.к. самый современный фреймворк для этого JavaFX отстаёт по возможностям от 1С и от очень старого Delphi6, т.е. лет на 20. Чтобы создать 1 кнопочку на форме с простым действием уходит 1 час вместо одной минуты на 1С, т.к. кроме долгих настроек надо ещё конфигурировать .xml файл и др.
- приложения для смартфона – редко используется т.к. на андроиде теперь официальный язык Kotlin, а на iOS – Swift
- приложения для специализированных устройств – редко используется т.к. нет вакансий
Работа 1С-ника итак состоит в создание бакенда на 80%, 10% - рисование форм frontend, 10% - общение с пользователями, т.е. работа по смыслу совсем не изменится. Вместо пользователей будут аналитики, вместо создания форм будет общение с фронтендерами, добавится только создание автоматических юнит-тестов, которые 1С-ники не делают вообще никогда, а может и не добавится, если это сделают отдельные тестировщики, в общем ничего не изменится в режиме работы.
В 1С все программируют на русском языке, можно и на английском, но никто этого делать не будет, поэтому казалось бы нет ничего общего с явой, совсем не похоже, и знания из 1С не пригодятся уже, но достаточно просто сделать «перевод» терминов из 1С в ява, тогда всё будет намного проще – что я и попытаюсь сделать.
Потребуется изучить:
- IDE - как конфигуратор в 1С, IntelliJ IDEA или NetBeans
- Java core - синтаксис языка, он простой, совместно с фреймворками становится всё сложно, а сам язык легкий для изучения.
- Работа с коллекциями - аналогичные коллекции как в 1С: "Массив", "Список значений", "Структура", "Соответствие" и др., точно такие же коллекции есть в java, достаточно написать таблицу соответствий как они называются тут и там.
- Maven - для собирания всех файлов разных компонент, фреймворков в одну папку, нужной структуры, а также их обновления, выполнения скриптов. В 1С версии 8 обычно не нужно, там редко бывают внешние файлы, а в 1С 7.7 много внешних файлов, но всё равно нет ничего аналогичного.
- Spring boot, Spring BOM - в основном контролирует чтоб версии разных компонент (старые и новые) не конфликтовали друг с другом, т.е. где-то в интернете хранится таблица совместимости разных версий компонент друг с другом.
- Работа с базами данных - аналогично как в 1С "Внешние источники данных". Можно просто запросами вытягивать оттуда данные, а лучше сделать маппинг ORM т.е. превращение реляционных таблиц в объекты java - 1С это делает полностью автоматически, незаметно для программиста, в яве тоже полуавтоматически создаются классы типа "@Entity"
- Запросы к базе данных - знание обычных TSQL запросов пригодится, но будет ещё язык HQL - специализированный язык запросов для превращения реляционных таблиц в объекты java, как и в 1С есть свой особый язык запросов.
- Spring core - в основном для Dependency Injection - как бы для хранения глобальных переменных, которых нет в 1С версии 8, но есть в версии 7.7
- Spring MVC - как веб сервисы в 1С. Например аннотация "@GetMapping("/page1")" означает что функция которая ниже выполнится когда откроется веб страница "page1"
- XML и JSON - они итак есть в 1С, в яве ещё легче сериализовать объект т.е. превратить в строку.
- RestFull, микросервисы - то же что в 1С галочка "Публиковать стандартный интерфейс Odata", который для всех объектов конфигурации автоматически создает интерфейс RestFull, в яве делают то же самое только для нужных объектов.
- Тестирование - вручную как в 1С, и написание автоматических юнит-тестов.
- Git - как хранилище конфигурации в 1С, для совместной работы нескольких программистов.
- Deploy - обновление конфигурации, в яве это обычно просто скопировать куда-то файл, специально подготовленный.
По каждому пункту напишу отдельную статью, кратко, для общего понимания и сравнения как одно и то же делать на разных языках, и где легче.
P.S. Работаю программистом 1С, изучаю java, поэтому описание про яву примерное, ненаучное.
PPS: Работаю уже golang developer, т.к. ява отстойная :-) , устаревшая, не нравится