Обновить
128K+

Java *

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

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

Жизнь и удивительные приключения в экзотических JavaScript окружениях

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

Вам когда-нибудь приходилось писать на хорошо знакомом языке под никогда ранее невиданную платформу? Странное ощущение. Кодабра делится опытом, как максимально быстро разобраться с незнакомым окружением и начать жить.


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

Дни открытых дверей перед запуском нового курса по Java

Время на прочтение1 мин
Охват и читатели3.3K
Приглашаем всех 27 мая и 1 июня на Дни открытых дверей! Из любой удобной точки мира — приходите к нам — формат проведения онлайн.


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

Autoboxing и unboxing в Java

Время на прочтение3 мин
Охват и читатели82K
Сегодня речь пойдет об автоупаковке (autoboxing) и распаковке (unboxing). Это одно из существенных изменений, внесенных в JDK 5. Теперь разработчики могут писать более чистый код, но непонимание работы этого механизма может привести к плохой производительности.
Читать дальше →

Стать востребованным на рынке труда: какие темы нужно знать Java разработчику?

Время на прочтение4 мин
Охват и читатели16K
Нам часто задают вопросы про программу обучения: почему мы предлагаем именно такую программу и почему считаем, что именно специалисты, изучившие темы, которые мы рассматриваем на курсе, будут востребованы на рынке.
Читать дальше →

Анонс конференции Joker 2017: День Java-единства

Время на прочтение3 мин
Охват и читатели6.4K
Пришло время анонсировать новый Joker (вообще, планировали сделать это в июне, но нас уже 150 человек просят билеты, откладывать некуда). Анонсирую:

3-4 ноября в Санкт-Петербурге пройдет Java-конференция Joker 2017. В прошлый раз мы собрали больше 1000 участников, у нас было больше 40 спикеров в 12-ти треках, которые выступали в течение 2 дней. О том, что будет в этот раз, читайте под катом.

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

Почему следует полностью переходить на Kotlin

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


Хочу рассказать вам о новом языке программирования, который называется Kotlin, и объяснить, почему вам стоит использовать его в своём следующем проекте. Раньше я предпочитал Java, но в последний год пишу на Kotlin везде, где только можно. И в данный момент я не представляю себе ситуации, в которой лучше было бы выбрать Java.


Kotlin разработан в JetBrains, и участие тех же людей в создании наборов IDE, таких как IntelliJ и ReSharper, хорошо заметно по самому языку. Он прагматичен и краток, благодаря чему написание кода превращается в приятный и эффективный процесс.


Хотя Kotlin компилируется в JavaScript и скоро будет компилироваться в машинный код, я сконцентрируюсь на его первичной среде — JVM.


Итак, несколько причин, почему вам следует полностью переходить на Kotlin (порядок случаен):

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

Распределенные структуры данных [часть 1, обзорная]

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

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


Современные же приложения стремятся использовать все имеющиеся ресурсы, в частности, все доступные CPU.


К сожалению, использовать стандартные структуры данных при многопоточной обработке не представляется возможным, поэтому в Java 5 появились потокобезопасные структуры данных,
т.е. функционирующие исправно, при использовании из нескольких потоков одновременно, и расположились они в пакете java.util.concurrent.


Про Vector...

На самом деле, потокобезопасные, но неэффективные, структуры данных, как, например, Vector и Hashtable, появились еще в Java 1.0.
В настоящий момент, они не рекомендуются к использованию.


Однако, не взирая на всю технологическую мощь, заложенную в пакет java.util.concurrent, обработка информации потокобезопасными коллекциями возможна лишь в рамках одного компьютера, а это порождает проблему масштабируемости.


А что если нужно, в реальном времени, обрабатывать информацию о 100 миллионах клиентов,
когда датасет занимает 100Тб, а каждую секунду нужно совершить 100+ тысяч операций?
Вряд ли это возможно, даже на самом крутом современном железе, а если и возможно — только представьте себе его стоимость!


Намного дешевле добиться такой же вычислительной мощности объединив множество обычных компьютеров в кластер.



Остается лишь вопрос межкомпьютерного взаимодействия привычными средствами, схожими по API с потокобезопасными коллекциями из пакета java.util.concurrent и дающими те же гарантии, но не на одном компьютере, а на всем кластере.


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

Как пропатчить KDE под FreeBSD или, что ждать от мастер-классов на DevCon School 1 июня

Время на прочтение5 мин
Охват и читатели2.3K
С 2011 по 2016 включительно мы делали крутую конференцию DevCon в загородном формате на 2 дня. И каждый раз, в комментариях в анкетах нам просили больше рассказов про проекты реальных заказчиков, больше практикических работ!

И мы придумали и реализовали DevCon School: бесплатное для участников мероприятия с глубоким погружением. Несмотря на свою сравнительно короткую историю это название стало брендом и неким знаком качества. Нас просят проводить их ещё и ещё. Особое место занимают большие DevCon School, которые мы проводим два раза в год. В отличие от обычных, в них есть несколько тем, а самое главное, есть возможность выбрать, каким именно образом с этими темами знакомиться: интенсивы или мастер-классы.



Итак, посмотрим, что же нам готовят 12 мастер-классов доступных 1 июня на DevCon School: Технологии будущего, которая пройдёт в Digital October.
Читать дальше →

Производительность I/O бэкэнда: Node vs. PHP vs. Java vs. Go

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

image


Понимание модели ввода/вывода вашего приложения может привести и к пониманию различий между приложением, работающим с нагрузкой, под которой оно создавалось, и тем, которое лицом к лицу столкнулось с реальным способом своего применения. Возможно, если ваше приложение невелико и не создаёт большой нагрузки, то для него это не так важно. Но по мере роста трафика использование ошибочной модели ввода/вывода может погрузить вас в мир боли.


Как и в большинстве других ситуаций с несколькими возможными решениями, дело не в том, какой из вариантов лучше, дело в понимании компромиссов. В этой статье мы сравним Node, Java, Go и PHP из-под Apache, обсудим модели ввода/вывода в разных языках, рассмотрим достоинства и недостатки каждой модели и прогоним простенькие бенчмарки. Если вас волнует производительность ввода/вывода вашего следующего веб-приложения, то эта статья для вас.

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

IQL — очередной SQL-генератор для Java

Время на прочтение6 мин
Охват и читатели10K
Несколько лет назад я принялся за разработку одного крупного проекта на PHP, который только и делал что писал, читал и обновлял тонны данных в SQL. Сразу же было решено написать для этого проекта конструктор SQL-запросов, который тогда сильно облегчил мне жизнь и по сей день помогает мне и мои коллегам в ежедневной работе. Дело в том, что выложить этот конструктор в общественный доступ я не могу, так как проект принадлежит не мне, да и сильно завязан этот конструктор на наш фреймворк.

В связи с чем я решил разработать его аналог на Java, в надежде, что он сослужит кому-то добрую службу, так как не всем нужен ORM, а JOOQ кажется слишком сложным
Читать дальше →

Приглашаем на встречу ThinkJava #5 в Харькове

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


Приглашаем всех желающих на встречу ThinkJava #5! Мы будем обсуждать актуальные темы из мира Java, рассматривать с разных точек зрения тенденции индустрии, делиться опытом, задавать вопросы и получать на них ответы — и всё это в традиционно уютной атмосфере встреч ThinkJava.
Читать дальше →

JSF 2 + Maven + Jetty. Подготовка

Время на прочтение3 мин
Охват и читатели5.6K
С момента последней публикации о JSF 2 вышла новая версия — JSF 2.3.0. Это знаковое событие мотивировало на написание статьи. В этой части мы подготовим и запустим базовое приложение на JavaServer Faces.
Читать дальше →

[Археология Java] Контекстно-зависимый инлайнинг трейсов в Java

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

Коротко о статье


Инлайнинг методов – одна из наиболее важных оптимизаций в JIT-компиляторах (которые благодаря ей называются «основанными на методах» или «блочными»). Эта оптимизация расширяет область компиляции, позволяя оптимизировать несколько методов как единое целое, что повышает производительность приложений. Однако, если использовать инлайнинг методов слишком часто, время компиляции станет излишне большим, и будет сгенерировано слишком много машинного кода. И вот это скажется на производительность уже негативно.

Трассирующие JIT-компиляторы собирают не всё подряд, а только часто исполняемые пути, так называемые трейсы. С помощью этого можно получить более быструю компиляцию, уменьшить количество сгенерированного машинного кода, и улучшить его качество. В предыдущих наших работах, мы реализовали инфраструктуру для записи трейсов и трассирующий Java-компилятор, модифицируя код Java HotSpot VM. Основываясь на этой работе, мы посчитали, какой эффект инлайнинг трейсов оказывает на производительность и количество генерируемого кода.
Читать дальше →

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

Терминология. Борьба со сложностью

Время на прочтение3 мин
Охват и читатели13K
image Терминология — это важнейшая вещь в любом деле. Не договорившись о терминах невозможно преуспеть. Что с этим в программировании? В частности в Java? Не очень хорошо, если не сказать плохо.

Кажется нет четкой договоренности даже о базовых терминах. Например, если я скажу «внутренний класс», о чем вы подумаете? Держу пари, будет больше чем один вариант того что имеется в виду. И это очень плохо т.к. создает трудности в общении и не только.
Читать дальше →

Kotlin vs. Java: скорость компиляции

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


Как уже знают все Android-разработчики, Google недавно объявила об официальной поддержке Kotlin в Android. Многие риски, связанные с использованием этого замечательного языка в Android-проектах, сняты. Но актуальным, особенно для очень крупных проектов, каким является Badoo, остаётся вопрос о скорости сборки. Я был рад обнаружить, что в сети уже есть исследования на эту тему, и переводом одного из них хочу поделиться.


Итак, если вы переводите приложение с Java на Kotlin, будет ли оно компилироваться дольше?

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

Реализация SSO через SAML с примером

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

Введение


Доброго времени суток, дорогой читатель. Я уже давно хотел написать статью на хабре и вот наконец-то этот момент настал. Из последних тем, которыми я занимался и о которых мне есть что рассказать — это была реализация SSO для одного сервиса. Хочу здесь сразу уточнить, что в принципе SSO через Facebook и Google уже было в сервисе до моего прихода. Моей же задачей было реализовать его через протокол SAML.


SSO (Single Sign-On), — технология единого входа пользователей, благодаря которой владея одной лишь учетной записью пользователь может посещать множество различных сервисов.


SAML — это популярный XML-протокол для реализации SSO. Как правило большие организации (enterprise) используют именно его, как проверенный и надежный вариант.


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

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

Kotlin — официальный язык разработки под Android. Разбираемся в тонкостях языка на Stepik

Время на прочтение1 мин
Охват и читатели31K
Вчера на ежегодной конференции Google I/O, проходящей в Сан-Франциско, Гугл объявил Kotlin официальным языком программирования для платформы Android.

Изучить Kotlin можно уже сегодня, на Stepik, совершенно бесплатно.


Немного про Kotlin и онлайн-курсы

Как я перешёл из системного администрирования в Android-разработку

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


Несколько лет назад, я, как и другие начинающие Android-разработчики, решил найти работу в этой области. Если вы начинающий специалист, и не знаете, с чего начать изучение Android, или если вы уже обладаете определёнными знаниями в этой теме и планируете в скором времени устраиваться на работу, то этот материал для вас. По задумке, к данной статье вы будете возвращаться по мере накопления опыта: смотреть на каком этапе в данный момент находитесь и что изучать дальше.
Читать дальше →

Вторая группа обучения Java и наши новости

Время на прочтение3 мин
Охват и читатели4.7K
В апреле на образовательной платформе Otus.ru стартовал первый образовательный курс для Java-программистов, обучение на котором продлится пять месяцев. Занятия идут своим чередом в онлайн формате, обучение программистов проходит в группах через вебинары и домашние задания. Проекты максимально приближены к реальным условиям: решаются актуальные задачи, уклон делается на практические навыки. Преподаватель курса – профессиональный разработчик и опытный педагог Виталий Чибриков — такое сочетание не часто можно встретить, тем более оно ценно. Мы считаем очень важным, что в процессе обучения студент получает возможность поработать с профессионалом своего дела.
Читать дальше →

Для чего нужен Apache Ignite / GridGain, на примере .NET & C#

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

В последнее время имена GridGain и Apache Ignite нередко мелькают в интернетах. Однако, судя по комментариям (например, здесь), мало кто понимает, что же это за продукт и с чем его едят.


В этой статье я попытаюсь доступным языком объяснить, и на примерах кода показать, что умеет Apache Ignite.


Apache Ignite Logo


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