Обновить
256K+

Java *

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

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

Scala vs Kotlin (перевод)

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

Наша команда, аналогично с автором статьи, уже почти как год перешла со Scala на Kotlin в качестве основного языка. Мое мнение во многом совпадает с автором, поэтому предлагаю вам перевод его интересной статьи.


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


Ниже я хочу привести примеры, которые мне нравятся в Scala и Kotlin, а также их сравнение в том, как они реализованы в обоих языках.

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

Joker Student Edition: Лучшие видео прошлых конференций

Время на прочтение6 мин
Охват и читатели15K
Бескрайние просторы интернета часто озаряются вспышками праведного гнева по поводу бессмысленности и бесполезности студентов-айтишников, нашего образования и сетований в стиле «раньше трава была зеленее».



Этот пост получится большим, а все вот почему: мы рассмотрим ТОП-5 докладов с двух наших студенческих конференций (Joker 2015 University Day и JPoint 2016 Student Day), поговорим о том, чего хочет молодежь в 2016 году, а также пройдемся по новому формату Joker 2016 Student Edition (Петербург, 15 октября, Экспофорум).
И все это уже здесь, под катом.

Плагин CsvLogWriter для JMeter

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

Введение


Наверняка каждый, кто пользовался стандартными листенерами в JMeter, сталкивался со следующими ограничениями:
  • стандартные листенеры не позволяют получить подробную информацию по всем подзапросам, прописанным в тест плане;
  • стандартные листенеры выводят информацию в XML — формате, что осложняет дальнейший анализ логов средствами Excel и Pandas.

Чтобы обойти данные ограничения, было принято решение переработать формирование лог-файлов с помощью нового плагина CsvLogWriter.
Читать дальше →

Java Stream API: что делает хорошо, а что не очень

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


Настолько ли «энергичен» Java 8 Stream API? Возможно ли «превращение» обработки сложных операций над коллекциями в простой и понятный код? Где та выгода от параллельных операций, и когда стоит остановиться? Это одни из многочисленных вопросов, встречающихся читателям. Попробуем разобрать подводные камни Stream API с Тагиром Валеевым aka @lany. Многие читатели уже знакомы с нашим собеседником по статьям, исследованиям в области Java, выразительным докладам на конференциях. Итак, без проволочек, начинаем обсуждение.

Тагир, у вас отличные показатели на ресурсе StackOverflow (gold status в ветке «java-stream»). Как вы думаете, динамика применения Java 8 Stream API и сложность конструкций выросла (на основе вопросов и ответов на данном ресурсе)?
Читать дальше →

Запускаем Node.js на JVM

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

Прошли те дни, когда целые компании зависели от одного поставщика технологий. Даже маленькие фирмы и любители найдут оптимальное для себя решение, объединяя технологии в одном проекте. Долгое время Java держала первенство среди серверных технологий. Но сегодня Node.js повсюду.



Но даже с ростом популярности Node.js и JavaScript, Java не теряет силу. Кроме того, немногие организации могут позволить себе перенести всю платформу с JVM на Node.js. Это значит, что компания должна либо продолжать использовать текущий стек технологий, либо запускать несколько стеков, которые будут общаться через сетевое API. Однако есть и другой способ: запустить Node.js прямо в процессе JVM. И J2V8, наконец, сделала это возможным.

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

Минуя бесконечность: t-тест своими руками

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

В этом посте речь пойдёт о реализации процедуры вычисления значения функции распределения Стьюдента без использования каких-либо специальных математических библиотек. Только Java (либо C/C++, код вполне универсален).

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

Работа с фреймворком итеративной обработки графов Giraph на примере RBM

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

The Indifferent by xetobyte

Всем привет. В предыдущей статье мы рассказали, как создавать свои приложения под фреймворк Giraph (надстройка над системой обработки данных Hadoop), и обещали подробно рассмотреть, как работать с Giraph, на примере алгоритма обучения Restricted Boltzmann Machine. Итак, в какой-то момент группа сегментации аудитории департамента рекламных технологий Mail.Ru Group столкнулась с необходимостью подобрать инструмент для быстрого анализа графов, и по целому ряду причин (читайте ниже) наше внимание привлекла система Apache Giraph.
Читать дальше →

Замечания о реактивном программировании. Технологический ландшафт

Время на прочтение10 мин
Охват и читатели11K
Здравствуйте, дорогие читатели! Сегодня предлагаем вашему вниманию обещанную статью с обзором возможностей реактивного программирования. Приятного и плодотворного чтения.
Читать дальше →

«Чтобы вылезти выше среднего, нужна какая-то мотивация за пределами денег» — интервью с Русланом Черёминым

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


Друзья, перед вами очередной выпуск «Без слайдов» — программы, видеокаста, подкаста, где я беру интервью с интересными мне людьми. Гостем этого выпуска стал Руслан Черёмин aka cheremin, эксперт по Java и Concurrency. Мы поговорили про Java Memory Model, техническое блогерство, культуру эксперимента, фундаментальное образование и многое другое.



Как всегда — под катом расшифровка интервью.
Читать дальше →

Java DevTools: модно не значит хорошо

Время на прочтение8 мин
Охват и читатели18K
Сегодня с нами Антон Архипов aka antonarhipov — разработчик и менеджер продукта JRebel в компании ZeroTurnaround, — и говорим мы о правильных средствах разработки и их неправильном использовании. Антон профессионально занимается разработкой на Java более десяти лет. Основные интересы связаны с языками программирования и инструментарными средствами разработки ПО. Очень любит vim и IntelliJ IDEA. Часто выступает на международных конференциях — за спиной выступления на таких конференциях как JAX, JavaOne, Joker, JPoint, GeeCON, Jfokus, JavaZone, EclipseCon.


— Антон, чем вы занимаетесь в области Java-разработки?

— Последние шесть лет я работаю в компании ZeroTurnaround, и по долгу службы занимаюсь любимым делом – разработкой инструментов для Java-разработчиков. Наш известный продукт – JRebel для Java-разработчиков, и наш второй крупный продукт – это XRebel, тоже для Java-разработчиков, но больше для тех, кто занимается веб-разработкой. Я занимался первые три года JRebel, и последние три года участвую в создании XRebel.
Читать дальше →

Прокачка @PreAuthorize в Spring Security произвольными типами и простым инспектируемым DSL

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

Spring Security — must-have компонент в Spring-приложениях, так как он отвечает за аутентификацию пользователя, а также за авторизацию тех или иных его действий в системе. Одним из методов авторизации в Spring Security является использование аннотации @PreAuthorize, в которой с помощью выражений можно наглядно описать правила, следуя которым модуль авторизации решает, разрешить ли проведение операции или запретить.


В моём REST-сервисе возникла необходимость предоставить точку доступа к описанию правил авторизации для всех методов контроллеров сервиса. Причём, по возможности, избежать раскрытия специфики именно SpEL-выражений (т.е., вместо permitAll нужно что-то вроде anybody, а principal избегать вовсе как избыточное выражение), но возвращать свои выражения, с которыми уже можно делать что угодно.


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

Маленький, но очень полезный патч в Selenium

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

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


Примерно полгода назад тестов и задач стало столько, что наша маленькая ферма с Selenium в час пик стала буквально «захлебываться» от запросов на новую сессию Firefox или Chrome. Выглядело это примерно так: на Selenium grid образуется очередь из сессий, которые ждут свободный браузер. Пользователи продолжают запускать автотесты, и эта очередь продолжает расти, но браузеры заняты старыми задачами и сессии «отваливаются» с таймаутом.


дай ноду

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

Spring/Jackson + @JsonView: фильтруем JSON

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

Здравствуйте!

Недавно в своем учебном Spring проекте Java Enterprise (Topjava) столкнулся с задачей каcтомизации сериализации объекта User в JSON в зависимости от контроллера: для REST API контроллера нужно было возвращать хешированный пароль (поле user.password), а для контроллера отображения на UI- нет. Можно решить задачу в «лоб», сделав нестолько TO (Data Transfer Object), но в Spring 4.2+/Jackson 2.6 появилась возможность использовать Jackson’s Serialization Views. Однако с статье есть подвох, и для невнимательных читателей вьюхи работают не так, как он ожидает.

В результате мне пришлось немного покопаться в реализации Jackson, чтобы понять, как все это работает. Коротко об этом:
under cut

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

Супермедленный и супербыстрый бенчмарк

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

В недавней статье про производительность Java разгорелась дискуссия на тему измерения производительности. Глядя на неё, с грустью приходится сознавать, что многие люди до сих пор не понимают, насколько сложно правильно измерить время выполнения того или иного кода. Кроме того, люди вообще не привыкли, что один и тот же код в разных условиях может выполняться существенно разное время. К примеру, вот одно из мнений:


Если мне надо узнать, "какой язык быстрее для меня на моей задаче", то я прогоню самый примитивный бенчмарк в мире. Если разница будет существенной (скажем, на порядок) — то скорее всего и на пользовательской машине все будет примерно также.

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

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

Производительность Java: настоящее и будущее

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

Уже два десятилетия активно плодятся мифы о том, что приложениям на Java свойственны проблемы с производительностью. Одновременно с этим на Java создаются по-настоящему высоконагруженные системы. Кто же в конечном итоге прав? Чтобы составить мнение о том, как сейчас обстоят дела с производительностью Java, мы обратились к двум заинтересованным сторонам: создателям самой Java и клиентам, использующим Java в своих системах. На наши вопросы любезно согласились ответить Алексей Шипилёв (Oracle) и Олег Анастасьев (Одноклассники).


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

Почему следует использовать RxJava в Android – краткое введение в RxJava

Время на прочтение8 мин
Охват и читатели31K
Здравствуйте все.

Мы продолжаем знакомить вас с нашим издательским поиском, и хотели прозондировать общественное мнение на тему RxJava.



В ближайшее время собираемся опубликовать более общий материал по реактивному программированию, которое нас также интересует не первый год, а сегодня предлагаем почитать о применении RxJava в Android, так как именно на этой платформе особенно важна динамичность и быстрота реагирования. Добро пожаловать под кат
Читать дальше →

Рейтинг языков программирования в 2016 году

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


Спор о том, какой язык программирования лучше, не утихает долгие годы. Многие соглашаются с тем, что все же нельзя говорит о «лучшем языке программирования». Какие-то более распространенные, какие-то — менее. Причем изучая один какой-то язык программирования, приходится учить связанные с ним вещи, что нередко приводит к изучению еще одного языка программирования, потом — следующего и так далее…

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

Изучаем OpenGL ES2 для Android Урок №3. Освещение

Время на прочтение20 мин
Охват и читатели17K
Перед тем как начать
Если вы новичок в OpenGL ES, рекомендую сначала изучить уроки №1 и №2, так как данный урок опирается на знания предыдущих уроков.
Основы кода, используемого в этой статье, взяты отсюда:
1. http://andmonahov.blogspot.com/2012/10/opengl-es-20.html
2. http://www.learnopengles.com/android-lesson-two-ambient-and-diffuse-lighting/
В результате мы получим такую картинку на экране устройства или эмулятора.

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

HOCON — конфигурируем гибко

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


Хранение параметров программ в текстовых конфигах — задача довольно частая и на первый взгляд тривиальная. Многие тут же хмыкнут: а в чем проблема-то? Есть куча форматов (и библиотек для работы с ними): properties, XML, JSON, YAML. В чем хочешь — в том и храни. Делов-то.

Однако масштабы вынуждают посмотреть на это иначе. В частности, после многолетней разработки игровых серверов на Java я постепенно пришел к выводу, что управление конфигами не настолько уж банально. В этой статье речь пойдет о формате HOCON — какие возможности он предоставляет и почему в последнем проекте мы стали пользоваться именно им. Если конкретнее, то мы используем Typesafe Config — opensource-библиотеку написанную на Java.
Читать дальше →

Эффективное кеширование. От теории к практике

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

Как правило, статьи о кешировании начинаются за здравие, а заканчиваются LRU кешем. Попробуем переломить эту тенденцию? Начнем с того, чем LRU плох, а закончим за здравие. Я надеюсь.

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