ar
Feedback
Чашечка Java

Чашечка Java

الذهاب إلى القناة على Telegram

Лучшие материалы по Java на русском и английском Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels

إظهار المزيد
8 570
المشتركون
+224 ساعات
-47 أيام
-2830 أيام
أرشيف المشاركات
Разбор задач JPoint 2019 Всем привет! Закончилась одна из самых хардкорных конференций по Java – JPoint 2019, она проходила в седьмой раз и как всегда побила рекорд по посещаемости, в этот раз мероприятие привлекло более 1700 специалистов в области Java-разработки. «Одноклассники» принимали участие во всех конференциях JPoint. Начиная с 2013 мы активно поддерживаем JPoint и на своих стендах устраиваем для участников различные активности по проверке знаний Java. В этом году у нас были знаменитые «нерешаемые» задачи от ведущих разработчиков OK.ru. Участники конференции, правильно ответившие на вопросы, получили призы. Справедливости ради надо сказать, что из 600 листочков с задачами, которые мы раздали, обратно было получено менее 100, средний балл равен примерно 0.25. Лучшим оказалось решение, набравшее 4 балла из 5 возможных. Мы публикуем задачи и их решения, чтобы вы смогли проверить свои силы. Читать: https://habr.com/ru/companies/odnoklassniki/articles/447218/?utm_campaign=447218 @a_cup_of_java | Другие наши каналы

(Не)официальное приложение Хабра — HabrApp 2.0: получение доступа Одним томным и уже порядком надоевшим вечером, я, листая официальное приложение хабра, в который раз загибал пальцы, по одному за каждую нерабочую фичу. Тут, например, нельзя прокомментировать, здесь отказывают в праве голоса, и вообще, почему не видно формул на экране? Было решено: нужно что-то удобное, приятное, своё. Что насчёт своего приложения для Хабра? Читать: https://habr.com/ru/articles/447148/?utm_campaign=447148 @a_cup_of_java | Другие наши каналы

Не заставляйте слушателей рефлексировать Введение В процессе разработки очень часто возникает необходимость создать экземпляр класса, имя которого хранится в конфигурационном XML файле, или вызвать метод, название которого написано в виде строки как значение атрибута аннотации. В таких случаях ответ один: “Используй reflection!”. В новой версии CUBA Platform одной из задач по улучшению фреймворка было избавление от явного создания обработчиков событий в классах-контроллерах UI экранов. В предыдущих версиях объявления обработчиков в методе инициализации контроллера очень захламляли код, так что в седьмой версии мы решительно намерились все оттуда вычистить. Читать: https://habr.com/ru/companies/haulmont/articles/447022/?utm_campaign=447022 @a_cup_of_java | Другие наши каналы

Как я Scala учил Месяца назад я получил свою первую работу и стал стажер-разработчиком, наша команда использует язык Scala. Мне кажется, все начинающие разработчики в первый день потерянные. одновременно наваливается куча новых имен, технологий, каких-то правил, да и мало ли что еще, абсолютно все для тебя ново, это же первая работа. В моем же случае я еще и не знал языка, на котором буду программировать, до момента собеседования я даже никогда о нем не слышал. Итог: в первый день я был в полном ауте. Спросите как тогда я вообще получил эту работу? Я знал Java, на собеседовании мне сказали что джависту перейти на скалу будет достаточно легко и можно не переживать. Но видимо чуть-чуть попереживать все же стоило, потому что первое время перед собой я видел просто экраны, заполненные текстом, в которых сходу была ясна едва ли половина. Но больше дискомфорта приносило даже не то, что я чего-то не понимал, а то что там многое по-другому, да даже тип переменной идет после названия, а порой его вообще нет. final String str = "abc"; //Java val str = "abc" // Scala Читать: https://habr.com/ru/articles/446988/?utm_campaign=446988 @a_cup_of_java | Другие наши каналы

Трассировка сервисов, OpenTracing и Jaeger В наших проектах мы используем микросервисную архитектуру. При возникновении узких мест в производительности достаточно много времени тратится на мониторинг и разбор логов. При логировании таймингов отдельных операций в лог-файл, как правило, сложно понять что привело к вызову этих операций, отследить последовательность действий или смещение во времени одной операции относительно другой в разных сервисах. Для минимизации ручного труда мы решили воспользоваться одним из инструментов трассировки. О том, как и для чего можно использовать трассировку и как это делали мы, и пойдет речь в этой статье. Читать: https://habr.com/ru/companies/srg/articles/446752/?utm_campaign=446752 @a_cup_of_java | Другие наши каналы

Криптография в Java. Класс Certificate Привет, Хабр! Представляю вашему вниманию перевод заключительной статьи "Java Certificate" автора Jakob Jenkov из серии статей для начинающих, желающих освоить основы криптографии в Java. Читать: https://habr.com/ru/articles/446888/?utm_campaign=446888 @a_cup_of_java | Другие наши каналы

39 новых фич, которые будут доступны в Java 12 Из замечательного интервью на Хабре: «Саймон Риттер — человек, который работал над Java с самого начала и продолжает делать это в роли заместителя технического директора Azul — компании, работающей над виртуальной машиной Zing JVM и одним из лучших сборщиков мусора, C4 (Continuously Concurrent Compacting Collector)» Ниже — перевод его статьи о новых фичах JDK 12 и некоторых трудностях, с которыми вы можете столкнуться мигрируя на новую сборку. Я написал несколько постов в блоге, в которых перечислены все изменения для каждого из последних выпусков Java (JDK 10, JDK 11). Сейчас я рассмотрю темную сторону JDK 12, сосредоточив внимание на некоторых подводных камнях, которые могут вызвать проблемы если вы захотите перенести приложение на эту версию. Читать: https://habr.com/ru/articles/446590/?utm_campaign=446590 @a_cup_of_java | Другие наши каналы

Эволюция H2 — оконные функции, CTE, JSON/XML во встраиваемой базе данных Есть open source проекты которые стали коммерчески успешным мейнстримом, как например PostgreSQL/Elasticsearch. Другие, к примеру RethinkDB, проиграли на рынке и остановили разработку. А проект H2 database встраиваемой базы данных, написанной на языке java, развивается и здравствует в своей нише. Для демонстрации функционала SonarQube, Jira, Confluence при первом запуске используют H2 database. H2 является базой для запуска SQL тестов в памяти, почти в любом JVM проекте. Есть пример применения менее известный пользователям — это использование H2 в распределенном ignite-sql и это уже production ready сценарий использования встраиваемой базы данных как части другого решения. Меньше месяца назад вышла версия 1.4.199 в которой теперь можно писать достаточно сложные SQL запросы. Читать: https://habr.com/ru/articles/446380/?utm_campaign=446380 @a_cup_of_java | Другие наши каналы

Как вы можете сделать Java лучше Многие люди жалуются, что в Java чего-то не хватает, что-то глючит или медленно работает. Хорошая новость: у вас есть возможность не жаловаться, а своими силами сделать Java лучше. Java практически полностью открыта в виде проекта OpenJDK. У этого проекта есть свои особенности, но в целом вам ничего не мешает самим сообщать о проблемах, исправлять их и даже разрабатывать новую функциональность. В этой статье я немного расскажу, как это делать новичку. Читать: https://habr.com/ru/articles/209876/?utm_campaign=209876 @a_cup_of_java | Другие наши каналы

Побеждаем NPE hell в Java, не используя IntelliJ IDEA Отказ от ответственности Во-первых, материал появился потому, что хотелось быстро объяснить индусам коллегам, что такое null-анализ, чем он хорош и почему нужно прямо сейчас преодолеть корпоративную лень и начать использовать этот анализ в проектах. Статьи, содержащей полную систематизированную информациию о предмете без привязки к IDE, не нашлось, так что пришлось писать самому. И хотя в результате полной систематизации так и не получилось, всё равно захотелось поделиться материалом с более широкой аудиторией. Будет минимум текста и много изображений. Во-вторых, на ресурсе уже есть отличная статья tr1cks, посвящённая IntelliJ IDEA, которая усиливает и без того стойкое впечатление, что IDEA — это очень хорошо, а Eclipse — это для бедных (что стало притчей во языцех). Для соблюдения баланса я сконцентрируюсь на Eclipse. Читать: https://habr.com/ru/articles/204518/?utm_campaign=204518 @a_cup_of_java | Другие наши каналы

Компактный Java сервлет для мобильного веб Основная область программирования для меня, это разработка программного обеспечения для автоматизации учёта в торговли. С возможностью использовать для этого сервлеты Java я столкнулся в 2009 году, когда вместе с последней, вышедшей для десктопа, версией Openbravo POS шёл модуль ресторана для PDA. Основной идей тогда для разработчиков Openbravo POS было, чтобы не усложнять десктопную версию приложения, вынести узкую бизнес-логику в отдельное небольшое приложение, главной изюминкой которого был компактный веб-интерфейс для доступа с любого устройства, а не только того, где может быть запущена Java c Swing. При этом тогда предполагалось, что сервлет не только будет работать с одной и той-же базой, что и десктоп версия, но и контейнер для него будет интегрирован в приложение на десктопе, после запуска которого пользователь автоматический получал доступ к POS в радиусе действия Wi-Fi сети. В рамках комьюнити данная идея дальнейшего развития не получила, но я с 2012 для своих клиентов заложенными тогда принципы продолжаю пользоваться, и в данной статье расскажу читателям, как используя Stripes Framework в связке с jQuery Mobile и ORMLite, получить инструмент для быстрой разработки небольших сервлетов ориентированных на мобильный веб. Читать: https://habr.com/ru/articles/156781/?utm_campaign=156781 @a_cup_of_java | Другие наши каналы

Интеграция Raspberry Pi с NetBeans 8.0 В марте этого года вышла новая версия NetBeans 8.0. Одной из её особенностей стала возможность работы через интерфейс NetBeans с встроенными версиями Java SE и ME. Разработчиками IDE от Oracle в качестве тестовой платформы предлагается использовать Raspberry Pi с устанавливаемой удалённо Java SE Embedded. Прежде я уже публиковал два перевода из журнала MagPi о Java программировании на Raspberry Pi, но в основном они были восприняты негативно, так как читатели не увидели в них чего-то особенного, характерного именно для такой связки, как Java и Raspberry Pi. Надеюсь, что после знакомства с этим уже оригинальным руководством, мне удастся немного смягчить позицию читателей в вопросе особенности подхода к Java программированию на встроенных системах типа Raspberry Pi. Подготавливаем Raspberry Pi Настроек Raspberry Pi немного. Ваш Raspberry Pi должен быть доступен в сети через SSH, а для вас на нём для чтения и записи должна быть доступна рабочая директория. Подготавливаем NetBeans Перед тем, как устанавливать новую платформу Java в NetBeans, я рекомендую прослушать небольшой доклад Льва Приймы по теме Java SE Embedded 8. Читать: https://habr.com/ru/articles/219191/?utm_campaign=219191 @a_cup_of_java | Другие наши каналы

Платформа для видеосервиса сроком в квартал Сегодня мы расскажем, как нам удалось построить свою платформу для сервиса видео на Одноклассниках на Java за 3 месяца. Начнем с того, что представляет собой видеосервис на Одноклассниках. Он доступен как на вебе, так и в версиях для мобильных устройств. Одним из отличий Одноклассников от других соцсетей является наличие видеовитрины, где в разделах «ТОП недели», «Новинки» и каналах собраны видео. Для этих разделов видео отбирается автоматически по хитрому алгоритму на основании числа просмотров, классов и скорости роста популярности видео. И конечно, на витрине представлены каналы с контентом от партнеров:— сериалы, ТВ шоу, мультфильмы и кино. В основном, это стандартный видеосервис. Пользователь загружает видео, дальше оно проходит модерацию, после чего другие пользователи могут его посмотреть. Видеосервисом на Одноклассниках пользуется свыше 10 миллионов уникальных пользователей в день, которые смотрят свыше 70 миллионов видеороликов и загружает 50 тысяч видео в день. Видеобаза Одноклассников насчитывает свыше 28 миллионов роликов. Исходящий трафик по вечерам достигает 80 гигабит в секунду. Ежедневно загружаемые 5 терабайт нового видео в день преобразуются в наш внутренний формат и на выходе получается 2 терабайта. Получившиеся файлы хранятся в трех копиях, что, в итоге, суммарно составляет 6 терабайт нового видео в день. Входящий трафик по загрузке достигает 2 гигабит в пиковые часы. Читать: https://habr.com/ru/companies/vk/articles/219429/?utm_campaign=219429 @a_cup_of_java | Другие наши каналы

1000+ часов видео по Java на русском Добрый день. Меня зовут Головач Иван, я руковожу небольшой образовательной компанией и преподаю сам: 1. Java Core 2. Junior Java Developer: Servlet API, JDBC, Maven, JUnit, Mockito, Log4J, основы Spring/SpringMVC, основы JPA/Hibernate, шаблоны/архитектуры MVC/IoC/DAO. 3. Multicore programming in Java. Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX). В следствии этого у меня скопилось значительно количество ссылок на видео на русском языке по Java как моего авторства, так и моих коллег. (GolovachCourses.com) Здесь собраны несколько вариантов записи моего курса Java Core. Модуль #1 (Procedural Java): Набор июль 2013: #1, #2, #3, #4 Набор апрель 2013: #1, #2, #3, #4 Набор февраль 2013: #1, #2, #3, #4 Набор январь 2013: #1, #2, #3, #4 Набор октябрь 2012: #1, #2, #3, #4. Читать: https://habr.com/ru/companies/golovachcourses/articles/215275/?utm_campaign=215275 @a_cup_of_java | Другие наши каналы

Утечка памяти с ThreadLocal Дамы и господа, хочу поделиться с вами знатным способом выстрелить себе в ногу, которым я снес себе одну конечность по колено, хоть и мнил себя экспертом в области concurrency-библиотеки. Но подвела меня такая простая штука, как ThreadLocal, нежданно-негаданно бесследно поглотив пару лишних гигабайт памяти сервера. Безусловно, памяти ваших серверов можно найти лучшее применение, чем хранение мусора. Поэтому не повторяйте мою ошибку. А именно: не стоит пытаться хранить в ThreadLocal ссылки на этот самый ThreadLocal, или на какой-то граф объектов, в конечном итоге ссылающийся на этот самый ThreadLocal. Как же так?! Читать: https://habr.com/ru/companies/maxifier/articles/218313/?utm_campaign=218313 @a_cup_of_java | Другие наши каналы

Изменения в String. Java 7 Всем привет. Последние события в Украине как-то отбросили меня от хабра, но вот, все, более менее, наладилось и я, вернувшись к привычному ритму работы, вспомнил о парочке своих постов в черновиках. В связи с выходом 8-й версии явы, пост, возможно, уже несколько устарел, но не пропадать же добру. Итак, как-то вечером, оптимизируя очередной кусочек кода — случайно заглянул в String и обнаружил, что класс строки уже не тот. Так как строка, пожалуй, один из самых распространенных типов, думаю многим будет интересно узнать об изменениях. Оптимизирован метод String.split() Метод split строки стал быстрее работать для односимвольного параметра. Теперь в методе вообще не будет использоваться регексп и будет применен indexOf в цикле. Было: public String[] split(String regex, int limit) { return Pattern.compile(regex).split(this, limit); } Стало: public String[] split(String regex, int limit) { if (((regex.value.length == 1 && ".$|()[{^?*+\".indexOf(ch = regex.charAt(0)) == -1) || ...)) { ... while ((next = indexOf(ch, off)) != -1) { ... } ... return result; } return Pattern.compile(regex).split(this, limit); } 2 поля удалены Начиная с 6-го апдейта 7-й явы из класса строки были удалены 2 поля: private int offset; private int count; Как вы, наверное, помните эти поля использовались при вызове метода substring. Назначение полей — уменьшение сложности метода и попытка избежать создания нового массива символов строки используя ссылку на уже существующий массив. Что, в свою очередь, в некоторых ситуациях могло порождать известную утечку памяти. Теперь же размер строки на 8 байт меньше и проблема утечки навсегда решена. Читать: https://habr.com/ru/articles/218961/?utm_campaign=218961 @a_cup_of_java | Другие наши каналы

Пишем REST API на Vert.x. Часть 1: настройка окружения Привет, харбаюзер. В этой серии статей мы напишем REST API с использованием Vert.x. Начнём с простого: установки самого vert.x-а и настройки запуска простого приложения в IDE. Читать: https://habr.com/ru/articles/218733/?utm_campaign=218733 @a_cup_of_java | Другие наши каналы

GWT, Java 8 и Future Добрый день. Думаю, многие из вас знают о выходе Java 8, и о том, какие нововведения она несет. К сожалению, последняя версия GWT(2.6.0) на данный момент до сих пор не поддерживает лямбды и default-методы в интерфейсах. Поскольку фреймворк GWT довольно востребован, многим приходится часто сталкиваться с разработкой именно на нем, мне не терпелось попробовать писать на GWT с использованием вновь добавленных в язык фич. Читать: https://habr.com/ru/articles/218731/?utm_campaign=218731 @a_cup_of_java | Другие наши каналы

Обзор докладов конференции JPoint 2014 Всем привет! Как знают многие джавахабровцы, через 10 дней в Москве состоится конференция JPoint, которая соберёт более 800 Java-разработчиков из России и ближнего зарубежья. Все доклады — на русском языке. Сначала мы думали, как обычно, разбавить конференцию несколькими англоязычными докладчиками, но в итоге решили от этой идеи отказаться, ибо и без того нам удалось собрать экспертов почти по всем интересным нам областям. FAQ по конференции я уже публиковал на хабре полтора месяца назад. Сейчас — самое время пройтись по докладам и мастер-классам конференции и посмотреть, что же нас ожидает. Все доклады конференции можно разбить на три категории: * Прикладной * Из первых рук * Взрыв мозга 18 докладов, 5 тренингов и голосовалка Читать: https://habr.com/ru/companies/jugru/articles/218601/?utm_campaign=218601 @a_cup_of_java | Другие наши каналы

Плагинизация с использованием Maven и Eclipse Aether Когда конечными пользователями вашего продукта являются разработчики, способные не только предложить вам идеи для его улучшения, но и горящие желанием всячески поучаствовать в его расширении, вы начинаете задумываться о том, как бы предоставить им подобную возможность. При этом вы не хотите давать полную свободу, ровно как и доступ к репозиторию с исходным кодом. Как в этом случае позволить сторонним разработчикам вносить изменения исключая необходимость изменения исходников, компиляции и перевыкладки системы? Подробности Читать: https://habr.com/ru/articles/218323/?utm_campaign=218323 @a_cup_of_java | Другие наши каналы