es
Feedback
Чашечка Java

Чашечка Java

Ir al canal en Telegram

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

Mostrar más
8 570
Suscriptores
+224 horas
-47 días
-2830 días
Archivo de publicaciones
Concurrency: 6 способов жить с shared state В многопоточном программировании много сложностей, основными из которых являются работа c разделяемым состоянием и эффективное использование предоставляемых ядер. Об использовании ядер пойдет речь в следующей статье. С разделяемым состоянием в многопоточной среде существуют два момента, из-за которых возникают все сложности: состояние гонки и видимость изменений. В состоянии гонки, потоки одновременно изменяют состояние, что ведет к недетерменированному поведению. А проблема с видимостью заключаются в том, что результат изменения данных в одном потоке, может быть невидим другому. В статье будут рассказаны шесть способов как бороться с данными проблемами. Все примеры приведены на Java, но содержат комментарии и я надеюсь будут понятны программистам не знакомым c Java. Данная статья носит обзорный характер и не претендует на полноту. В то же время она наполнена ссылками, которые дают более подробное объяснение терминам и утверждениям. Читать: https://habr.com/ru/articles/216049/?utm_campaign=216049 @a_cup_of_java | Другие наши каналы

Автоматический контроль качества Java-кода Код, который пишет программист, должен быть рабочим – самое первое правило успешной работы, с которым согласится и сам программист, и все его начальники. Но, кроме того, что код должен просто работать, часто к нему предъявляются повышенные требования – наличие комментариев (внутренней документации), читаемость, быстроту внесения изменений, совместимость с явными и неявными стандартами. Всё то, что можно назвать качеством кода. Однако, в отличие от работоспособности кода, которую можно оценить с помощью выполнения проверочных тестов, качество кода не является простой оценкой TRUE или FALSE. Более того, под качеством кода понимается набор субъективных оценок восприятия кода другим человеком. Однако давайте всё-таки попробуем как-то формализовать задачу оценки качества, и, при возможности, дать способ автоматического выполнения этой задачи. Читать: https://habr.com/ru/articles/63212/?utm_campaign=63212 @a_cup_of_java | Другие наши каналы

Абсолютная загадка наследования в Java Почему эта загадка абсолютная? По двум причинам: • Она касается основ языка Java, а не какого-то малоизвестного нюанса API. • Она расплавила мой мозг, когда я на нее наткнулся. Если вы хотите проверить себя перед дальнейшим чтением, пройдите этот тест. Читать: https://habr.com/ru/articles/62602/?utm_campaign=62602 @a_cup_of_java | Другие наши каналы

Транзакции в Spring Статья описывает пример по работе с транзакциями в популярном framework Spring. Статья предполагает, что вы знакомы с java и spring. Рабочий пример кода можно скачать с sf Читать: https://habr.com/ru/articles/62484/?utm_campaign=62484 @a_cup_of_java | Другие наши каналы

NetBeans в Java Real-Time NetBeans — очень удобная для разработчика среда, обычно отпугивающая своей тормознутостью, т.к. громоздка и написана на Яве. Что ж, будем надеятся, что однажды все наладится, а пока посмотрим, как эту ситуацию может исправить Real-Time Java. Запуск NetBeans в JavaRTS Читать: https://habr.com/ru/articles/61658/?utm_campaign=61658 @a_cup_of_java | Другие наши каналы

Учимся проектировать на основе предметной области (DDD: Domain Driven Design) 1. Введение В данной статье я хотел бы рассказать об этих трёх буквах, постоянно находящихся на слуху, но для многих являющихся тайной за семью печатями, а так же привести ряд ресурсов, с которыми неплохо было бы познакомиться при желании продолжить развитие в проектировании на основе предметной области (DDD: Domain Driven Design). Читать: https://habr.com/ru/articles/61524/?utm_campaign=61524 @a_cup_of_java | Другие наши каналы

Сериализация в Java Сериализация это процесс сохранения состояния объекта в последовательность байт; десериализация это процесс восстановления объекта, из этих байт. Java Serialization API предоставляет стандартный механизм для создания сериализуемых объектов. В этой статье вы увидите как сериализовать объект, и почему сериализация иногда необходима. Вы узнаете об алгоритме сериализации используемом в Java и увидите пример, который иллюстрирует сериализованый формат объекта. В конце у вас должно сложиться чёткое представление о том, как работает алгоритм сериализации, а так же каким образом представлены части объекта в сериализованном виде. Читать: https://habr.com/ru/articles/60317/?utm_campaign=60317 @a_cup_of_java | Другие наши каналы

SpringSource Tool Suite бесплатно, ROO и спецификация DI совместно с Google На прошедшей конференции SpringOne Europe компания SpringSource сделала несколько объявлений: * SpringSource Tool Suite, плагин для Eclipse, упрощающий разработку Spring-приложений становится бесплатным. В ближайшее время ожидается прогресс в поддержке других продуктов SpringSource: Groovy & Grails. * Spring ROO — фреймворк для увеличения производительности Java-разработчиков при написании Spring-приложений путём использования Code Generation и Aspect Oriented Programming. * Партнёрство с Google для создания единой спецификации по Dependency Injection. Читать: https://habr.com/ru/articles/59329/?utm_campaign=59329 @a_cup_of_java | Другие наши каналы

Java web-разработчик, используешь ли ты wicket? Читать: https://habr.com/ru/articles/59287/?utm_campaign=59287 @a_cup_of_java | Другие наши каналы

Необычное поведение generics Случайно обнаружил нетипичную проблему с параметризацией и наследованием в Java. Сразу оговорюсь, что все это представляет только академический интерес. В реальной жизни так криво писать никто не будет. Но формально такого быть не должно: Interface.java public interface Interface { void test(Class clazz); } BaseClass.java public abstract class BaseClass<t implements Interface { abstract public void test(Class clazz); } MyClass.java public class MyClass extends BaseClass { public void test(Class clazz) { } } Компилятор выдает ошибку: MyClass is not abstract and does not override abstract method test(java.lang.Class) Читать: https://habr.com/ru/articles/59135/?utm_campaign=59135 @a_cup_of_java | Другие наши каналы

Перевод манов с оффсайта Sun. Часть 1 Еще в сентябре прошлого года, начиная изучение Java я наткнулся на подкаст Голодного «The Art Of Programming». В одном из них он прославлял мануалы? расположенные на оффсайте Sun. Достаточно долгое время проведя со словарем и IDE, я добился некоторого результата. Недавно пришла мысль, что люди, не сильно владеющие английским языком не могут использовать этот ресурс, каким бы хорошим он ни был. Ниже последует перевод первой статьи (она небольшая), а к хабралюдям есть вопрос: как вы оцениваете качество/целесообразность подобного перевода? P.S. Публикую в блоге JAVA, потому что никак не получается опубликовать в «Стартап Программист» P.P.S. За дельный совет в переводе спасибо miravingin Читать: https://habr.com/ru/articles/59120/?utm_campaign=59120 @a_cup_of_java | Другие наши каналы

Parse it! Какое-то время назад мне по работе пришлось провести небольшое исследование. Суть его состояла в поиске наилучшего pdf-парсера реализованного на java. Немного о проекте. В нем реализована система пересылки внутренних сообщений, к которым могут быть прикреплены файлы. Также есть поиск, который должен осуществляться по содержимому аттачментов. Большую часть подобных аттачментов составляют pdf-ки. Собственно работа механизма довольно проста: при отсылке сообщения данные аттачмента парсятся и по ним стороится индекс. Долгое время документы парсились при помощи библиотеки PDFBOX, работа которой не вызвала ни у кого радости: долго и со сбоями. В итоге были выбраны 4 библиотеки, сравнением которых я занялся: PDFBOX, JPod, iText и Acrobat. Читать: https://habr.com/ru/articles/57076/?utm_campaign=57076 @a_cup_of_java | Другие наши каналы

Анонсирован план развития Grails Пока что разработчики сообщили о двух версиях: Grails 1.2 «Bedivere» обещает быть релизом направленным на стабильность: обновление основных компонент(в том числе Spring до версии 3.0), переход с Jetty на Tomcat, выделение WebFlow в отдельный плагин, а так же GSP в самостоятельное решение. Релиз ожидается в июне 2009 года. Grails 2.0 «Galahad» ставит свой целью упор на модульность плагинов с помощью технологии OSGi. Параллельно с этими релизами будет вестись активная работа над плагинами для работы с JPA, JCR, Portlet & Flex. P.S. Будущие релизы получили свои имена в честь рыцарей круглого стола короля Артура, в частности именно Галахад по легенде нашёл священный Грааль. Читать: https://habr.com/ru/articles/56672/?utm_campaign=56672 @a_cup_of_java | Другие наши каналы

Прорыв в программировании Сегодня компания JetBrains выпустила революционный плагин для своей Java IDE IntelliJ IDEA — это Voice Control plugin Теперь кодирование станет еще быстрее и, главное, больше никаких клавиатур и мышек!!! Что умеет плагин: — Создание класса, конструктора, полей, переменных, параметров — Навигация по коду — Рефакторинги — Вызов компиляции и деплоймент — Дебаггинг (и всё это с помощью голоса!!!) — Возможность парного программирования — Поддерживаются любые языки (вы обучаете плагин) Подробнее можно узнать по ссылке выше и там же можно посмотреть демку плагина. P.S. так же обновлены продукты TeamCity, ReSharper и т.д. можно посмотреть на сайте ;) Читать: https://habr.com/ru/articles/56159/?utm_campaign=56159 @a_cup_of_java | Другие наши каналы

Отладка Java-сервлетов Несмотря на то, что я пишу на Java уже 2 месяца (о да, это срок :) ), я ни разу не запускал remote debugger. При разработке на GWT этого делать и не нужно — оно как-то само всё это делает. :) Но вот настала весна, моё GWT приложения распустилось, и хочет, чтобы я его выложил на сервер. Но вдруг выяснилось, что просто так оно работать не захотело. А почему, я понять не могу. И значит мне нужен дебагер. Принцип работы наверное любого удалённого отладчика (remote debugger) прост — контейнер (это может быть и какой-либо сервлет-контейнер, и php-интерпритатор. Полагаю, что интерпритаторы Ruby, Perl, Python работают аналогичным образом), который выполняет приложение настраивается таким образом, что при запуске приложения он либо начинал слушать определенный порт, либо сам пытался коннектиться куда-либо. Читать: https://habr.com/ru/articles/53846/?utm_campaign=53846 @a_cup_of_java | Другие наши каналы

Создание демон-процесса на Java Доброго всем времени суток. Недавно, по долгу службы, появилась необходимость написать background process для IBM AIX 5.2 на Java с контролирующим shell скриптом. Раз работа проделана, документация поднята, код написан, почему бы не поделиться с общественностью? По сему, переходим к делу. читать дальше ... Читать: https://habr.com/ru/articles/51991/?utm_campaign=51991 @a_cup_of_java | Другие наши каналы

IntelliJ IDEA 8.1 released Сегодня вышла обновленная версия идеевской «восьмерки». Помимо баго-фиксов в 8.1 есть новые вещи, которые считаю уместным упомянуть в двух словах. 1. Idea Server. У каждой более менее-сложной программы, а идею безусловно можно причислить к сложной программе, существует такая вещь как настройки. Каждый раз, когда мы запускаем программу «не_со_своего_компьютера», а другими словами просто в другой конфигурации (или программа только что установлена) мы первым делом лезем в настройки и меняем их на свой лад. Например, я это делаю постоянно с Total Commander'ом, выставляя свои любимые настройки: как быстро искать, как сжимать, что показывать и т.д. IntelliJ IDEA, как и любая другая IDE, программа примерно эдак в 1000 раз сложнее чем вышеописанный пример. И настроек там так много, что всех их не упомнишь. Это и шрифты, и цвета, настройки инспекций (некоторые можно отключать), и, самое главное, это кастомные шорткаты. Согласитесь, каждый раз выставлять эти настройки заново не очень то удобно. Чтобы решить эту проблему, в IDEA появилась новая фича — Idea Server. Все очень просто. Вы регистрируетесь один раз на сервере идее и настройки вашей IDE хранятся удаленно. Когда Вы запускаете IDE, то можете залогиниться под вашим аккаунтом и настройки загрузятся сами с сервера. На мой взгляд, любители кастомных настроек оценят эту вещь по достоинству. Я, если честно, использую настройки по умолчанию. 2. Мощный апдейт VCS функциональности. Во-первых, появилась интеграция с Git, который становится все более популярным. Во-вторых, появилась интеграция с TFS (Team Foundation Server). 3. Для любителей SQL поддержан Оракловый диалект. 4. Интеграция с Resin AppServer 5. Появилась поддержка копирайтов. Для меня это существенный плюс. Т.к. я часто коммичу в open-source communities, то проверка копирайта занимает какое-то время. Если Вы правите чужой код с копирайтом, то нужно не забыть изменить год на новый и т.д. Сейчас все это (вставка или правка копирайта) можно делать прямо из диалога коммита. Удобно. Так же произведена работа над улучшением перфоманса. В частности, убыстрен стартап, убыстрена работа с кэшом компилятора, что значительно уменьшает время компиляции. Подробнее тут http://www.jetbrains.com/idea/features/newfeatures.html Читать: https://habr.com/ru/articles/51931/?utm_campaign=51931 @a_cup_of_java | Другие наши каналы

java.io.Serializable и наследование Что такое сериализация можно почитать в отличной статье Евгения Матюшкина. Я же отмечу случай с этим чудом техники в аспекте наследования классов. Интерфейс Serializable не требует от разработчика никаких действий, однако важно помнить, что внутренний механизм сериализует лишь поля этого класса и поля наследников, а поля родителя будут инициализированы с помощью конструктора без параметров. Читать: https://habr.com/ru/articles/50259/?utm_campaign=50259 @a_cup_of_java | Другие наши каналы

Родилась задачка Возникла у меня одна задумка, которая может мне приятно облегчить программирование некоторых штук (в реальном проекте). Но будет ли это работать, я не знал. В результате чего я накидал маленький тест чтобы проверить свои догадки. После написания этого теста, обнаружил, что этот примерчик может быть вполне интересной и познавательной java-задачкой. Вот такая задачка получилась Читать: https://habr.com/ru/articles/50102/?utm_campaign=50102 @a_cup_of_java | Другие наши каналы

Applets reloaded Applets reloaded предисловие Ни для кого не секрет что Adobe Flash полноценно занял свою позицию в интернете. По общей статистики почти у 98% пользователей интернета установлен Flash плагин. Главное назначение которого — реализация «rich UI»(англ: богатый пользовательский интерфейс), проще говоря — красивый, динамический интерфейс. Однако в последнее время два гиганта решили пошатнуть его позицию — Microsoft и Sun. Microsoft выпустила технологию Silverligth, а Sun — решила нанести более серьезный удар. Выпустив сразу несколько продуктов с общей и довольно явной целью — пошатнуть Flash/Flex. Читать: https://habr.com/ru/articles/49989/?utm_campaign=49989 @a_cup_of_java | Другие наши каналы