Обновить
128K+

Java *

Объектно-ориентированный язык программирования

262,13
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Выпускники IT-стажировок в Райффайзенбанке — о том, как это было

Время на прочтение8 мин
Охват и читатели19K
В 2018 году мы в Райффайзенбанке провели семь IT-школ в Москве и омском Raiffeisen TechCenter. К нам приходили ребята с разным образованием и опытом, всех их объединяло желание попробовать свои силы в больших серьёзных задачах и стать классными профессионалами. За месяцы стажировок 60 начинающих специалистов выросли в крепких джуниоров, большинство из них остались в команде и продолжают развивать цифровые продукты вместе с нами. Чем можно заняться на digital-стажировке в банке? Рассказывают выпускники.
Читать дальше →

Lombok возвращает величие Java

Время на прочтение11 мин
Охват и читатели146K


Мы в Grubhub почти во всём бэкенде используем Java. Это проверенный язык, который за последние 20 лет доказал свою скорость и надёжность. Но с годами возраст «старичка» всё-таки начал сказываться.

Java — один из самых популярных языков JVM, но не единственный. В последние годы конкуренцию ему составляют Scala, Clojure и Kotlin, которые обеспечивают новую функциональность и оптимизированные функции языка. Короче говоря, они позволяют делать больше с более лаконичным кодом.
Читать дальше →

Как быстро подготовиться к собеседованию, на котором будут вопросы по алгоритмам и технологиям обработки информации?

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели11K
Приветствую всех читателей Хабра! Меня зовут Юрий, более 20 лет преподаю высокие технологии, Oracle, Microsoft и другие, а также занимаюсь созданием, разработкой и поддержкой нагруженных информационных систем для различных бизнес-заказчиков. Сегодня хотел бы рассказать вам об актуальном направлении: собеседованиях по технологиям обработки данных.

На собеседованиях такого плана работодателю бесполезно спрашивать у соискателя о технологиях, связанных с традиционным программированием. Поэтому я популярно расскажу, как готовиться к собеседованию только в одной узкой области, связанной с языками обработки информации, а именно — обработкой длинных целых чисел (длинная арифметика) и выявления информационных свойств объектов реального мира, которые описываются в длинных целых числах.
Читать дальше →

Сжатие данных алгоритмом Хаффмана

Время на прочтение15 мин
Охват и читатели73K

Вступление


В данной статье я расскажу вам о широко известном алгоритме Хаффмана, и вы наконец разберетесь, как все там устроено изнутри. После прочтения вы сможете своими руками(а главное, головой) написать архиватор, сжимающий реальные, черт подери, данные! Кто знает, быть может именно вам светит стать следующим Ричардом Хендриксом!


Да-да, об этом уже была статья на Хабре, но без практической реализации. Здесь же мы сфокусируемся как на теоретической части, так и на программерской. Итак, все под кат!

Читать дальше →

Пересылка запросов от Apache на Payara Server 5 в Ubuntu

Время на прочтение5 мин
Охват и читатели3.2K

В этой серии статей мы постараемся дать обзор основ использования Payara Server в «продакшане» с использованием Apache Web Server (httpd) и Ubuntu.

Читать дальше →

Как ухудшить производительность, улучшая её

Время на прочтение14 мин
Охват и читатели13K

Хотели как лучше, а получилось как всегда.
Виктор Черномырдин,
русский государственный деятель


Бывают в жизни случаи, когда ты вроде бы всё делаешь правильно, но что-то идёт не так.
Этот рассказ об одном из таких случаев.

Читать дальше →

Почему вы должны думать о функциональном программировании

Время на прочтение7 мин
Охват и читатели22K
Привет, Хабр! Представляю вашему вниманию перевод своей статьи «Why you should think about functional programming», посвященной функциональному программированию.

image

Почему вы должны думать о функциональном программировании? Давайте ответим на следующие вопросы:

  • всегда ли ваши проекты выполняются в определенные сроки?
  • Были ли у пользователей какие-либо жалобы?
  • Поддержка проекта никогда не занимала много времени?
  • Новый функционал всегда удачно вписывается в существующую архитектуру?

Если ответы на все вышеупомянутые вопросы положительные, вам не нужно ничего менять, ваша команда — редкий пример гармоничного персонала, методологии и инструментов. В противном случае вы должны быть открыты для новых подходов к решению ваших проблем, включая критический взгляд на используемые технические средства и языки программирования.
Читать дальше →

Eclipse выпускает GlassFish 5.1 для Java EE 8

Время на прочтение2 мин
Охват и читатели4.5K
Оригинал новости

image

Двигаясь вперед в развитии корпоративной Java, Eclipse Foundation представляет собственную версию сервера приложений GlassFish, которая традиционно служила эталонной реализацией платформы Java EE (Java Enterprise Edition).

Читать дальше →

26 рекомендаций по использованию типа var в Java

Время на прочтение19 мин
Охват и читатели43K

The Java Local Variable Type Inference (LVTI) или кратко — тип var (идентификатор var — это не ключевое слово, а зарезервированное имя типа) был добавлен в Java 10 с помощью JEP 286: Local-Variable Type Inference. Являясь 100% функцией компилятора, она не влияет на байт-код, время выполнения или производительность. В основном компилятор проверяет правую часть от оператора присваивания и, исходя из нее, определяет конкретный тип переменной, а затем заменяет им var.


Кроме того, это полезно для сокращения многословности шаблонного кода, а так же позволяет ускорить сам процесс программирования. Например, очень удобно писать var evenAndOdd =... вместо Map<Boolean, List<Integer>> evenAndOdd =... .


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


В этой статье мы рассмотрим 26 ситуаций, с примерами того, когда можно использовать var, а когда этого делать не стоит.

Читать дальше →

Spring, байткод, JDK: топ-10 докладов JBreak 2018

Время на прочтение6 мин
Охват и читатели8.8K


Хабр, привет! Раньше мы проводили в Новосибирске Java-конференцию JBreak. В 2019-м решили её не проводить, но от этого доклады JBreak 2018 не перестают быть полезными, так что традиционно делимся подборкой лучших (по мнению зрителей). Тем более, что многие попавшие в эту подборку спикеры скоро приедут с новыми докладами в Москву на JPoint — можно как раз «заочно познакомиться» с ними и понять, хочется ли на московскую конференцию.

Как обычно, доклады идут от «младшего» к «старшему» по рейтингу, но отличия между местами небольшие — так что лучше не сравнивать придирчиво места, а смотреть всё по интересующим темам!

Под катом видео разбиты с оглавлением по содержимому поста, презентациями и короткими описаниями.
Читать дальше →

Дополнительные лекции курса «Проектирование высоконагруженных систем» (осень 2018) в Технополисе

Время на прочтение4 мин
Охват и читатели7.7K
image

Мы продолжаем публиковать лекции курса «Проектирование высоконагруженных систем», который читается студентам Санкт-Петербургского Политехнического университета командой инженеров из Одноклассников в рамках двухлетней программы «Java-разработчик высоконагруженных приложений» проекта Технополис (совместный проект Mail.Ru Group и СПбПУ). В 2017 году были прочитаны и выложены 10 лекций (30 часов видео), но тема Highload настолько обширна, что за один семестр невозможно охватить всё. Мы лишь ненадолго погрузились в основные аспекты Highload-разработки, каждый из которых достоин отдельного курса. В этом году мы продолжаем закрывать белые пятна и представляем вашему вниманию набор из шести лекций на новые темы: начинаем с параллельных вычислений и livecoding первого этапа студенческого курсового проекта, после чего погружаемся в средства мониторинга и диагностики JVM, а потом переходим к проблемам отказоустойчивости. А после лекции о продвинутых алгоритмах, актуальных в высоконагруженных проектах, завершаем цикл лекцией о существующих подходах к репликации и об их применимости к разным задачам.

Первые десять лекций.

Список новых лекций:

  1. Actor Model. Future. Reactive Streams (Вадим Цесько incubos)
  2. Livecoding второго этапа проекта (Вадим Цесько incubos)
  3. Мониторинг и диагностика JVM (Андрей Паньгин apangin)
  4. Site Reliability Engineering (Антон Иванов keyplayer)
  5. «Современные» структуры данных (Дмитрий Щитинин dormidoncheg)
  6. Репликация (Дмитрий Щитинин dormidoncheg)

Jaxb (XJC) генерация классов из XML Schema (XSD) с описаниями классов и полей в виде аннотаций. XJC плагин

Время на прочтение5 мин
Охват и читатели47K

Думаю многие Java-разработчики которые хоть раз сталкивались с Web-сервисами, использовали генерацию Java DTO классов по описанию XML Schema (XSD). Jaxb с этим справляется на ура, не важно как его использовать, через xjc или wsimport вызов из командной строки, maven или gradle плагины.


Так быстро и просто сгенерировать классы из XSD схемы. Но вот одна проблема — практически полностью пропадают описания, имевшиеся в исходной схеме!


Практически, потому что Javadoc описание будет только у самого класса, в фиксированном формате (где не разделить описание и фрагмент XML без регулярок скажем), описание полей (филдов) отсутствуют полностью. А если вам они, как мне, нужны ещё и во время выполнения (runtime) — тут совсем беда.


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

Читать дальше →

Разбор утилиты Files.walkFileTree();

Время на прочтение4 мин
Охват и читатели67K
Не найдя нигде толкового описания на русском, что за зверь Files.walkFileTree(), и со скрипом освоив его, как оказалось впоследствии, несложный функционал, решил поделиться в рамках закрепления материалом с примерами, чего мне так не хватало.

Метод walkFileTree() позволяет обойти дерево файлов и поддиректорий передаваемого ему в качестве параметра элемента Path…
Читать дальше →

Ближайшие события

Руководство: Thymeleaf + Spring. Часть 2

Время на прочтение11 мин
Охват и читатели61K
Первая часть
Третья часть

5 Отображение Seed Starter Data



Первое, что покажет наша страница /WEB-INF/templates/seedstartermng.html, — это список с начальными стартовыми данными, которые в данный момент сохранены. Для этого нам потребуются некоторые внешние сообщения, а также некоторая работа выражений для атрибутов модели. Как это:
Читать дальше →

Руководство: Thymeleaf + Spring. Часть 3

Время на прочтение11 мин
Охват и читатели21K
Первая часть
Вторая часть

7 Проверка и сообщения об ошибках


Большинство наших форм должны показывать сообщения проверки, чтобы информировать пользователя об ошибках, которые он сделал.
Читать дальше →

Введение в Spring Boot с Spring Data Mongo

Время на прочтение12 мин
Охват и читатели28K
Всем привет. Спешим поздравить студентов с профессиональным праздником и сообщить о том, что уже в феврале у нас стартует курс «Разработчик на Spring Framework»! Этому и будет посвящена сегодняшняя публикация.

Лига Справедливости в опасности, и только Альфред может всех спасти — с новой системой управления с Spring Boot, Spring Data и MongoDB.

Для Лиги Справедливости настали темные времена, когда устрашающий Дарксайд решил поработить человечество. Бэтмен и Чудо-женщина занялись поисками участников Лиги, и не хватает только одного важного момента — надлежащей системы управления членами Лиги Справедливости.

Читать дальше →

Суровая сибирская JVM: большое интервью об Excelsior JET

Время на прочтение29 мин
Охват и читатели14K

Недавно мы писали о том, на какие ухищрения пошла Alibaba, чтобы сделать себе жизнь с OpenJDK более приемлемой. Там были комментарии вроде «оказывается, пока мы тут страдаем с обычной джавой, китайцы уже сделали себе свою особенную». Alibaba, конечно, впечатляет — но и в России есть свои фундаментальные проекты, где тоже делают «особенную джаву».


В Новосибирске вот уже 18 лет делают свою собственную JVM, написанную полностью самостоятельно и востребованную далеко за пределами России. Это не просто какой-то форк HotSpot, делающий всё то же самое, но чуть лучше. Excelsior JET — это комплекс решений, позволяющих делать совершенно другие вещи в плане AOT-компиляции. «Пфф, AOT есть в GraalVM», — можете сказать вы. Но GraalVM — это всё ещё очень исследовательская штука, а JET — это проверенное годами решение для использования в продакшене.


Это интервью с одними из разработчиков Excelsior JET. Надеюсь, оно окажется особенно интересно всем, кто хочет открыть для себя новые вещи, которые можно делать с Java. Либо людям, которые интересуются жизнью JVM-инженеров и сами хотят в этом поучаствовать.


Читать дальше →

Как мы тестировали drag&drop в HTML5

Время на прочтение6 мин
Охват и читатели8.1K
Так или иначе, все сталкивались с ситуациями, когда в банальной обстановке вдруг происходило что-то необычное. Примерно такой случай произошел с нами при тестировании нового приложения на проверенном сто раз окружении. Сюрпризом для нас стало использование некоторых возможностей HTML5 в работе front-end’а, а точнее невозможность стандартными средствами Selenium WebDriver автоматизировать тестирование drag&drop операций. Об этом опыте мы хотим рассказать.


Читать дальше →

Javathon ко Дню студента

Время на прочтение1 мин
Охват и читатели3K

26-27 января в Москве состоится хакатон для студентов со знаниями Java c призовым фондом 275 000р. Принять участие может джавист любого уровня!
Читать дальше →

Перевод руководства по Stream API от Benjamin Winterberg

Время на прочтение18 мин
Охват и читатели72K
Привет, Хабр! Представляю вашему вниманию перевод статьи "Java 8 Stream Tutorial".

Это руководство, основанное на примерах кода, представляет всесторонний обзор потоков в Java 8. При моем первом знакомстве с Stream API, я был озадачен названием, поскольку оно очень созвучно с InputStream и OutputStream из пакета java.io; Однако потоки в Java 8 — нечто абсолютно другое.
Читать дальше →