Обновить
256K+

Java *

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

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

Рейтинг хабов и компаний по постам/подписчикам

Время на прочтение8 мин
Охват и читатели15K
На данный момент на хабре около 350 хабов. Функционал сайта позволяет сортировать их по имени и по индексу. А по другим параметрам — например по количеству постов — нет, а хотелось бы.

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

В первой половине статьи я представлю вам рейтинги хабов и компаний, а также небольшой их анализ. А во второй — подробно распишу, как я на Java с помощью библиотеки JSoup парсил HTML страницы хабры, с какими интересными явлениями и проблемами столкнулся. И в конце статьи выложу полный исходный код программы.


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

Знаете ли Вы массивы?

Время на прочтение5 мин
Охват и читатели130K
Думаю, мало кто из готовящихся к своему первому интервью, при приеме на первую работу в должности (pre)junior программиста, ответит на этот вопрос отрицательно. Или хотя бы усомнится в положительном ответе. Конечно, такая простая структура данных с прямым доступом по индексу — никаких подвохов! Нет, в некоторых языках типа JavaScript или PHP массивы, конечно, реализованы очень интересно и по сути являются много большим чем просто массив. Но речь не об этом, а о «традиционной» реализации массивов в виде «сплошного участка памяти». В этом случае на основании индексов и размера одного элемента просто вычисляется адрес и осуществляется доступ к соответствующему значению. Что тут сложного?
Давайте разберемся

Воспроизведение MIDI звуков на языке JAVA

Время на прочтение7 мин
Охват и читатели27K
Прежде, чем перейти к сути, я немного расскажу вам о компьютерном звуке.

Существует два основных формата воспроизведения звуков компьютером:
цифровой (WAV-формат) и синтезированный (MIDI).

Цифровой звук является основным стандартом компьютерного звука сегодня. Именно оцифрованный звук вы слышите, проигрывая композиции в mp3 формате или прослушивая компакт-диски, просматривая фильм или играя в комьютерные игры.

Оцифрованный звук представляет собой набор битов, который последовательно описывает значение уровня амплитуды звуковой волны в каждый момент времени звучания. При его воспроизведении звуковая карта лишь переводит «цифровой» звук в привычную нам «аналоговую» форму.

Но существует и другой вид компьютерного звука — синтезированный (MIDI)
Читать дальше →

Алгоритмы логики бота для игры «Сапёр»

Время на прочтение9 мин
Охват и читатели98K
Наверное каждый из нас когда-нибудь играл, или по крайней мере пробовал играть в «Сапёр» («MineSweeper»). Логика игры проста, но в свое время за алгоритм ее прохождения даже обещали вознаграждение. В моем боте логика имеет три алгоритма, которые используются в зависимости от ситуации на поле. Основной алгоритм позволяет находить все ячейки со 100- и 0-процентной вероятностью нахождения мины. Используя только этот алгоритм и открывая наугад произвольные ячейки при отсутствии достоверного решения в стандартном сапере на уровне «Эксперт» можно достичь 33% выигрышей. Однако некоторые дополнительные алгоритмы позволяют поднять это значение до 44% (Windows 7).
Читать дальше →

Raspberry Pi и чашечку Java, пожалуйста! (Часть 2)

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

Данная статья перевод второй части статей посвящённых использованию Java на Raspberry Pi. Перевод первая части вызвал большой интерес к возможности применению Java на Raspberry Pi. Оригинал этой статьи был опуликован в 16 номере журнала MagPi.

Это вторая статья об использование Raspberry Pi для программирования на языке Java, прочитав её вы узнает больше о конструкциях этого языка и сможете попробовать написать более сложные программы. Также она может оказаться полезной тем, кто хочет узнать о языке С, так как основной синтаксис Java совпадает с синтаксисом С.

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

IdBasedLocking

Время на прочтение3 мин
Охват и читатели5.6K
У Java отличная поддержка параллелизма (concurrency) и блокировки (locking) — возможно, самая лучшая из тех, что предлагают современные языки. Кроме того, что в самом языке есть встроенная поддержка синхронизации, существует целый ряд полезных утилит на основе AQS framework. К ним относятся CountDownLatches, Barriers, Semaphores и прочие. Однако часто встречается ситуация, не поддерживающаяся напрямую: когда надо блокировать доступ не к конкретному объекту, а к идее этого объекта.

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

Vaadin: полезные доработки и наблюдения

Время на прочтение9 мин
Охват и читатели17K
Vaadin — компонентный UI фреймворк для создания веб-приложений на Java. Мы используем Vaadin в составе своей платформы CUBA на протяжении 4 лет и за это время накопили большой опыт работы с ним.

Vaadin был выбран нами по нескольким причинам:
  • Серверная модель программирования, не требующая применения JavaScript/HTML в прикладном коде
  • Возможность создавать насыщенный AJAX UI
  • Множество компонентов и сторонних аддонов

Из недостатков стоит отметить:
  • Высокие требования к памяти сервера, поскольку все элементы пользовательского интерфейса и их данные хранятся в HTTP сессии
  • Сложность расширения компонентов Vaadin и написания аддонов

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

Пишем, собираем и запускаем HelloWorld для Android в блокноте

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


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

По-сути эта статья является переводом и переработкой статьи Building Android programs on the command line под современные на данный момент JDK (7) и Android SDK (API level 19). Кроме того, я многое упростил и добавил кое-что от себя.

Используя только блокнот, мы напишем совсем маленькое учебное Android-приложение. А затем скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда прошу.
Читать дальше →

Java ME Embedded на Raspberry Pi

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

Насколько я могу судить, на Хабре да и не только, наблюдается всплеск интереса к микроконтроллерам — устройствам на базе ARM процессоров и другим не совсем обычным железкам. Рынок отвечает симметрично. Для удовлетворения возникшего спроса появились Arduino, Biggle Board, Raspberry Pi и множество других полезных штуковин.

С начала этого года прошло всего ничего, а на Хабре появились сразу две статьи о применении Java платформы на Rasprerry Pi «Raspberry Pi и чашечку Java, пожалуйста!» и «Raspberry PI и JAVA: пристальный взгляд». Вполне естественно, что в экспериментах использовалась привычная всем Java SE, порт которой под ARM появился около двух лет назад. Мало кто знает, что Java ME не почила с миром вместе с эрой кнопочных телефонов от Nokia. Она живет полноценной жизнью в новом мире — мире встроенных систем. О применении Java ME на Raspberry Pi я и хочу сегодня рассказать.
Читать дальше →

Новый лидер Java EE? Знакомимся с сервером приложений Wildfly 8 Final в InfoboxCloud IaaS. Часть 1. Быстрый старт

Время на прочтение5 мин
Охват и читатели61K
Недавно Oracle заявила о прекращении выпускa коммерческих версий Glassfish. С OpenSource версией все будет неплохо и она останется рефренсной имплементацией Java EE. Однако вызывает опасения тот факт, что качество самого сервера приложений начнет падать без коммерческой версии той же базы кода и соответственно enterprise качество для новых версий Glassfish будет недостижимо. Особенно это касается кейсов, о которых не думают разработчики, но в которых проблемы проявляются в продакшне. Kоммерческий продукт Oracle WebLogic к Glassfish отношения не имеет.

У многих разработчиков необходимость найти сервер приложений Java EE7, который с одной стороны будет иметь OpenSource версию, а с другой — возможность купить коммерческую версию на той же кодовой базе.

image

Таким сервером стал WildFly 8, полностью совместимый со стандартом Java EE 7 (прохождение Java EE TCK на 100%). Red Hat при необходимости продаст JBoss с коммерческой поддержкой. Кодовая база у обоих серверов одна. К тому же Arun Gupta, возможно главный евангелист платформы Java EE, перешел из Oracle в RedHat и крайне советует пользователям переходить на Wildfly. Нет повода ему не верить.

В этой статье мы рассмотрим сервер приложений WildFly 8 в облаке InfoboxCloud.

image


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

Умный дом. Конкретная реализация

Время на прочтение4 мин
Охват и читатели117K
Добрый день, уважаемое сообщество!
В своих предыдущих статьях я рассказывал о том, как делаю у себя умный дом. С тех пор прошло уже достаточно большое количество времени и я достаточно серьезно продвинулся как в оборудовании, так и в софте. Думаю, что эту очередную статью можно смело называть «Умный дом v3» :)
Читать дальше →

Хекслет: Erlang, логика, операционные системы, Java 2

Время на прочтение3 мин
Охват и читатели18K
Привет, Хабр!

Прошло уже больше полугода с момента старта проекта Хекслет. Напомню: мы проводим бесплатные онлайн-курсы по программированию и смежным дисциплинам. По традиции сегодня мы расскажем про новые курсы.

Статистика


  • Завершено четыре курса (всего – больше 100 уроков)
  • Сейчас в процессе – еще три курса, + запланирован старт двух курсов
  • 19 000 студентов зарегистрировано
  • Они сдали более 450 000 тестов
  • Просмотров лекций – больше 277 000 (не считая подкастов в iTunes и раздачи через битторрент)
  • 444 000 посетителей и 1.6M просмотров страниц


Новые курсы


Erlang / OTP


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

Масштабировать просто. Часть третья — стратегии

Время на прочтение6 мин
Охват и читатели15K
В предыдущих частях (тут и тут) мы говорили об основных архитектурных принципах построения масштабируемых порталов. Сегодня продолжим разговор об оптимизации правильно построенного портала. Итак, стратегии масштабирования.
Читать дальше →

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

Java'o'Fido: продолжение

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

Больше года прошло с того момента, как я начал писать проект jNode, и вот пришла пора первого релиза. Это вовсе не значит, что все это время проект был неиспользуемым, вовсе нет — только в российском регионе как минимум 5 узлов используют jNode. Но все это время проект был в стадии unstable. Хочешь использовать — скачай исходники, собери их, настрой конфигурационный файл и заполни базу данных начальными значениями. И никак иначе.

Но теперь ( наконец-то! ) пришла пора восстановить справедливость и дать возможность всем желающим поднять свой узел в Фидо просто и без проблем с минимальным приложением усилий. Кстати, я знаю, что Фидо мертво, все полимеры давно закончились, а мы — кучка старых ( и молодых ) маразматиков.
Читать дальше →

Raspberry PI и JAVA: пристальный взгляд

Время на прочтение4 мин
Охват и читатели70K
Недавно на хабрахабре вышла статья о java на raspberry pi, увидев название которой было много ожиданий, а под катом оказался банальный Hello World!

Дело в том, что ко мне как раз ехала моя малинка и хотелось получить ответы на следующие вопросы:

1. Сравнима ли скорость работы java на малинке и настольном компьютере?
2. Насколько удобно работать с java на raspberry?
3. Есть ли адекватные библиотеки для работы с GPIO?

Вот на эти вопросы я и попробую дать ответы в этой статье.

Кому интересно: добро пожаловать под кат (графики и фотографий обнаженной малинки там не будет)
Читать дальше →

Масштабировать просто. Часть вторая — кэширование

Время на прочтение4 мин
Охват и читатели16K
В предыдущей части мы говорили об основных архитектурных принципах построения масштабируемых порталов. Сегодня поговорим об оптимизации правильно построенного портала. Итак: первый вид оптимизации — локальный кэш.

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

Как перейти от Java к Scala в вашем проекте

Время на прочтение7 мин
Охват и читатели32K
Всем привет.
Периодически от Java-разработчиков, которые узнали о существовании Scala, звучат вопросы «Как начать использовать Scala в существующем Java-проекте? Сложно ли перейти от одного к другому? Много ли времени это займет? Как убедить начальство?» В нашем проекте именно такой переход и происходил, на сегодняшний день практически весь проект уже на Scala, поэтому решил поделиться рецептами и впечатлениями.

С чего все началось, оно же «А зачем оно мне вообще надо?»:
  1. хотелось изучить что-то новое и полезное в производстве;
  2. надоело писать много букв на Java, но и радикально переписывать все, скажем на Python, совсем не хотелось;

С учетом таких желаний выбор пал на обзор альтернативных JVM-based языков.
После обзора остановились на Scala. Понравились компактный синтаксис, strong typing, возможность писать в ОО-стиле и заявленное хорошее взаимодейтствие с Java-кодом в обе стороны. Тот факт, что Scala уже активно используют такие крупные компании, как Twitter, LinkedIn, Foursquare и так далее, внушил определенную уверенность в будущем языка.
У нас уже имелся проект на Maven с юнит-тестами на JUnit, поэтому важно было легко включить Scala без существенных затрат на адаптацию инфраструктуры.
Итак, по порядку.
Почитать по порядку

Масштабировать просто

Время на прочтение8 мин
Охват и читатели21K
От B2C-порталов ожидается прежде всего масштабирование. К сожалению, масштабирование слишком часто объявляется вопросом Технологии — достаточно выбрать модную технологию и все проблемы решены. То, что это не так, может проявиться, позднее всего, уже в production mode (на рабочей системе).
Вместо того, чтобы махать технологической булавой, расскажу о том, как при помощи продуманной архитектуры и сознательного отказа от модели данных разработать высоко доступный (highly available), масштабируемый (scalable) портал. Первая часть опишет общие концепты, а возможные сценарии и их решения последуют.
Читать дальше →

Новый вид разработчиков — Framework Java Coder?

Время на прочтение2 мин
Охват и читатели48K
Перевод небольшой заметки Yakov Fain с сайта javalobby.org о том, как обилие фреймворков на любой вкус лишают разработчиков необходимости знать, как всё устроено «под капотом». Думаю, эта проблема не ограничивается только Java, а всё ещё актуальна для любого языка, не смотря на то, что статья достаточно старая.

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

10 потенциальных SQL ошибок, которые делают программисты

Время на прочтение6 мин
Охват и читатели235K
Оригинал статьи носит название «10 SQL ошибок, которые делают Java разработчики», но, по большому счёту, приведённые в ней принципы можно отнести к любому языку.



Java программисты мешают объектно-ориентированное и императивное мышление в зависимости от их уровня:
— мастерства (каждый может программировать императивно)
— догмы (шаблон для применения шаблонов где-либо и их именование)
— настроения (применять истинный объектный подход немного сложнее чем императивный)

Но всё меняется, когда Java разработчики пишут SQL код.
Читать дальше →