Чашечка Java
Відкрити в Telegram
Лучшие материалы по Java на русском и английском Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels
Показати більше8 439
Підписники
-724 години
-227 днів
-6430 день
Архів дописів
8 438
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 | Другие наши каналы
8 438
Утечка памяти с ThreadLocal
Дамы и господа, хочу поделиться с вами знатным способом выстрелить себе в ногу, которым я снес себе одну конечность по колено, хоть и мнил себя экспертом в области concurrency-библиотеки. Но подвела меня такая простая штука, как ThreadLocal, нежданно-негаданно бесследно поглотив пару лишних гигабайт памяти сервера.
Безусловно, памяти ваших серверов можно найти лучшее применение, чем хранение мусора. Поэтому не повторяйте мою ошибку. А именно: не стоит пытаться хранить в ThreadLocal ссылки на этот самый ThreadLocal, или на какой-то граф объектов, в конечном итоге ссылающийся на этот самый ThreadLocal.
Как же так?!
Читать: https://habr.com/ru/companies/maxifier/articles/218313/?utm_campaign=218313
@a_cup_of_java | Другие наши каналы
8 438
Изменения в 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 | Другие наши каналы8 438
Пишем 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 | Другие наши каналы
8 438
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 | Другие наши каналы
8 438
Обзор докладов конференции JPoint 2014
Всем привет!
Как знают многие джавахабровцы, через 10 дней в Москве состоится конференция JPoint, которая соберёт более 800 Java-разработчиков из России и ближнего зарубежья. Все доклады — на русском языке. Сначала мы думали, как обычно, разбавить конференцию несколькими англоязычными докладчиками, но в итоге решили от этой идеи отказаться, ибо и без того нам удалось собрать экспертов почти по всем интересным нам областям.
FAQ по конференции я уже публиковал на хабре полтора месяца назад. Сейчас — самое время пройтись по докладам и мастер-классам конференции и посмотреть, что же нас ожидает.
Все доклады конференции можно разбить на три категории:
* Прикладной
* Из первых рук
* Взрыв мозга
18 докладов, 5 тренингов и голосовалка
Читать: https://habr.com/ru/companies/jugru/articles/218601/?utm_campaign=218601
@a_cup_of_java | Другие наши каналы
8 438
Плагинизация с использованием Maven и Eclipse Aether
Когда конечными пользователями вашего продукта являются разработчики, способные не только предложить вам идеи для его улучшения, но и горящие желанием всячески поучаствовать в его расширении, вы начинаете задумываться о том, как бы предоставить им подобную возможность. При этом вы не хотите давать полную свободу, ровно как и доступ к репозиторию с исходным кодом. Как в этом случае позволить сторонним разработчикам вносить изменения исключая необходимость изменения исходников, компиляции и перевыкладки системы?
Подробности
Читать: https://habr.com/ru/articles/218323/?utm_campaign=218323
@a_cup_of_java | Другие наши каналы
8 438
Использование javascript в Vaadin 7 или как я сэкономил $490 на графиках (часть 1)
В этой статье я расскажу вам как внедрял красивые графики в наш сервис учета коммунальных услуг Dom24x7 и с какими проблемами и неудобствами пришлось столкнуться.
Для Vaadin 7 имеется прекрасное официальное дополнение для работы с графиками, но проблема в том, что оно не бесплатное и стоит почти $500! Таких денег мне тратить не хотелось, и я решил поискать альтернативу из бесплатного, но, к сожалению, все что я нашел меня совершенно не удовлетворяло по качеству и тогда я вернул свое внимание на официальное дополнение для работы с графиками и решил изучить его повнимательнее.
Оказалось, что это дополнение всего лишь оболочка для прекрасной javascript библиотеки Highcharts, которую, о чудо, можно было использовать бесплатно в некоммерческих проектах (каковым, на текущий момент, является наш проект, хотя, когда его статус измениться, я с удовольствием приобрету коммерческую лицензию), хотя есть еще прекрасная альтернативная библиотека Amcharts, но все же решил остановиться на предыдущей.
Кстати, разработчики Vaadin объясняют, почему так дорого просят за дополнение по работе с графиками тем, что им приходится приобретать корпоративную лицензию.
Определившись с библиотекой осталось решить вопрос, как же все таки ее подключить к своему проекту?
Статья состоит из двух частей. Первая часть это перевод статьи о том как подключать javascript библиотеки к vaadin проектам, а вторая часть расскажет о там, как я, используя полученные знания, написал библиотеку для отображения графиков.
Итак…
Читать: https://habr.com/ru/companies/dom24x7/articles/218361/?utm_campaign=218361
@a_cup_of_java | Другие наши каналы
8 438
Проект Lazybones — «Лентяй», который работает за вас
Я не люблю Maven.
О моей пассионарной ненависти к этой штуке можно написать не одну статью, но сегодня я хочу поговорить об одной очень хорошей фиче Мавена — об архетипах. Что это такое можно прочитать в официальной документации, в каждом из туторилов по Мавену на Хабре(1, 2, 3), да и вообще, вы наверняка знаете и сами.
Так вот, архетипы — это круто, и было бы здорово, если бы 1) во многих проектах со стандартной структурой они были. 2) можно было бы их прикрутить к тем, у которых их нет.
Примерно так думал Питер Ледбрук, когда смотрел на полное отсутствие архетапов в Ratpack. Тогда и родился проект Lazybones — инструмент генерации проектов.
В этой статье я расскажу вам как 1) Пользоваться Lazybones для генерации проектов, для которых уже созданы шаблоны. 2) Создавать новые шаблоны для любых проектов.
Читать как создавать
Читать: https://habr.com/ru/articles/218205/?utm_campaign=218205
@a_cup_of_java | Другие наши каналы
8 438
JPHP — Как он работает. История создания
В этой статье я расскажу более подробно об истории проекта JPHP и каким образом он был разработан с технической стороны. Текст будет интересен как простым разработчикам PHP, так и любителям компиляторов. Я постарался описать все на простом языке.
JPHP это компилятор языка PHP для Java VM. Две недели назад я писал статью о проекте. Похожие проекты — JRuby для ruby, Jython для python. После публикации первой статьи о JPHP, проект за два дня набрал 500 звёзд на гитхабе и успел засветиться не только в РУнете, но и на зарубежных ресурсах, успел побывать на первом месте в рейтинге гитхаба.
Читать: https://habr.com/ru/articles/218021/?utm_campaign=218021
@a_cup_of_java | Другие наши каналы
8 438
Введение в Акторы на основе Java/GPars, Часть I
Кратко рассматривается API библиотеки GPars и решение многопоточной задачи средней сложности, результаты которой могут быть полезны в «народном хозяйстве».
Данная статья написана в ходе исследования различных библиотек акторов, доступных Java-программисту, в процессе подготовки к чтению курса «Multicore programming in Java».
Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).
Это первая статья из цикла статей цель которых сравнить API, быстродействие и реализацию акторов Akka с реализациями в других библиотеках на некоторой модельной задаче. Данная статья предлагает такую задачу и решение на GPars.
GPars — библиотека написанная для Clojure с широкой поддержкой различных подходов к параллельным вычислениям.
Плюсы GPars
* Исходный код написан на Java (в отличии от Akka, написанной на Scala). Всегда интересно посмотреть «что под капотом» на «родном» языке программирования
* GPars представляет собой целый «зоопарк» подходов (Actor, Agent, STM, CSP, Dataflow)
* GPars использует классы из runtime-библиотеки Clojure, написанной на Java. Интересно покопаться
Читать: https://habr.com/ru/companies/golovachcourses/articles/217899/?utm_campaign=217899
@a_cup_of_java | Другие наши каналы
8 438
JavaFX и AnimationTimer
Вариант применения интересного класса в JavaFX-приложении — предотвращение «заморозки» окна во время длительного процесса. Заодно чуть-чуть об особенностях прорисовки сцен в JavaFX.
Читать: https://habr.com/ru/articles/217269/?utm_campaign=217269
@a_cup_of_java | Другие наши каналы
8 438
Что ждет IntelliJ IDEA впереди?
Совсем скоро нашей флагманской среде разработки IntelliJ IDEA исполнится 14 лет. Уже немало продуктов создано с помощью наших инструментов, и казалось бы всевозможные фичи добавлены в IDE, но мы продолжаем искать новые источники вдохновения, чтобы наши продукты на вашем столе всегда были свежими. По случаю приближающейся годовщины мы хотели бы поделиться нашими взглядами – что именно в ближайшие 5-10 лет будет определять развитие в продуктовой разработке.
Для того, чтобы нам продолжать успешное развитие, как стремительно растущей компании, мы решили обратиться к независимым профессиональным консультантам. Выбор пал на весьма престижное международное бюро с большим опытом сотрудничества и собственными проектами для многих известных IT компаний. Было опрошено множество разработчиков различного возраста, пола, с разнообразными культурными и профессиональными интересами. Вооружившись основными результатами, наши разработчики с огромным энтузиазмом принялись внедрять новые идеи.
Что ждет нас? Все под катом.
Читать: https://habr.com/ru/companies/JetBrains/articles/217877/?utm_campaign=217877
@a_cup_of_java | Другие наши каналы
8 438
Перевод legacy-проекта на Dependency Injection. Путь Ситха
Внесу и свой вклад в тренд темного программирования.
Многим из вас знакома дилемма: использовать ли DI в своем проекте или нет.
Поводы перехода на DI:
* создание развитой системы авто-тестов
* повторное использование кода в различном окружении, в том числе в различных проектах
* использование 3rd-party библиотек, построенных на DI
* изучение DI
Доводы не использовать DI:
* усложнение понимания кода (поначалу)
* необходимость конфигурирования контекста
* изучение DI
Допустим, у нас есть большой рабочий проект, принято решение: переводить на DI. Разработчики чувствуют свой потенциал, уровень мидихлориан в крови зашкаливает.
Путь тебя ждет тернистый и долгий, мой юный падаван.
Если проект большой и в нем много разработчиков, одним коммитом вряд ли удастся сделать такой рефакторинг. Поэтому мы используем несколько плохих практик, упростив переход, а затем от них избавимся.
С чего начать?
Читать: https://habr.com/ru/articles/217523/?utm_campaign=217523
@a_cup_of_java | Другие наши каналы
8 438
Как web-страницу легко превратить в PDF?
Для меня было очень неожиданно то, что в хабе по Java практически нет информации по работе с PDF документами, поэтому я, из личного опыта, хочу на примере сервлета показать как легко можно любую web-страницу превратить в PDF документ.
Читать: https://habr.com/ru/articles/217561/?utm_campaign=217561
@a_cup_of_java | Другие наши каналы
8 438
Аннотации в Java, часть I
Это первая часть статьи, посвященной такому языковому механизму Java 5+ как аннотации. Она имеет вводный характер и рассчитана на Junior разработчиков или тех, кто только приступает к изучению языка.
Я занимаюсь онлайн обучением Java и опубликую часть учебных материалов в рамках переработки курса Java Core.
Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).
Мой метод обучения состоит в том, что я
1. строю усложняющуюся последовательность примеров
2. объясняю возможные варианты применения
3. объясняю логику двигавшую авторами (по мере возможности)
4. даю большое количество тестов (50-100) всесторонне проверяющее понимание и демонстрирующих различные комбинации
5. даю лабораторные для самостоятельной работы
Данная статье следует пунктам #1 (последовательность примеров) и #2(варианты применения).
Читать: https://habr.com/ru/companies/golovachcourses/articles/217595/?utm_campaign=217595
@a_cup_of_java | Другие наши каналы
8 438
Dripstat — сервис мониторинга производительности JVM или MMO игра?
Приветствую, хабражители!
Сегодня я хочу рассказать вам про сервис, который обнаружил буквально недавно — Dripstat. Он позволяет установить на локальную JVM специальный java-агент, который собирает статистику работы сервера приложений и отправляет на сайт, где с ней можно детальнее ознакомиться.
— Ну какие сервисы мониторинга? Сегодня суббота! — скажете вы, и будете правы. Более того, я даже поддержу эту мысль и в данной заметке расскажу как раз об обратной, развлекательной, стороне медали, и чуть-чуть о программировании на JS.
Итак, приглашаю дочитать тех кто заинтересовался. Let's play!
Читать: https://habr.com/ru/articles/217507/?utm_campaign=217507
@a_cup_of_java | Другие наши каналы
8 438
Легкий старт: Spring + MongoDB
Поискал на хабре схожие статьи, нашел только Morphia — легкий ORM для MongoDB, управляемый аннотациями, ничего по связке Spring Data + MongoDB не нашлось, в связи с этим решил написать пост из раздела «для самых маленьких» по настройке и использованию связки Spring + MongoDB.
Читать: https://habr.com/ru/articles/217391/?utm_campaign=217391
@a_cup_of_java | Другие наши каналы
8 438
Дружим штатную громкую связь Volvo с русскими буквами
Доброго времени суток!
Несколько месяцев назад появился у меня чудесный автомобиль Volvo V50 родом из Бельгии. Бортовой компьютер и магнитолу успешно перепрошили на русский язык у официального дилера, а вот с отображением русских имен из записной книжки телефона при использовании штатной громкой связи вышла беда: все кириллические символы показывались в виде подчеркиваний. Я пользуюсь Samsung Galaxy S3 прошитым CyanogenMod 11, поэтому возникла идея подправить стандартный Bluetooth.apk для обеспечения возможности видеть имя звонящего.
Читать: https://habr.com/ru/articles/217381/?utm_campaign=217381
@a_cup_of_java | Другие наши каналы
8 438
JPHP — Новый движок php для Java VM + JIT
Представляю вам свой open-source проект — JPHP. Это альтернативная реализация PHP для JavaVM с поддержкой JIT. Я начал проект в одиночку в октябре 2013 года и за 4 месяца реализовал компилятор php в байткод JVM. Язык поддерживается на уровне PHP 5.3, частично поддерживаются возможности PHP 5.4 и 5.5. По своей идеологии проект напоминает JRuby и Jython.
Я подготовил небольшую презентацию, которая расскажет о проекте и не отнимет у вас много времени:
Читать: https://habr.com/ru/articles/216651/?utm_campaign=216651
@a_cup_of_java | Другие наши каналы
