Рубрика «java» - 311

Позавчера, когда нечего было делать, пришла в голову мысль о том, как можно интересно организовывать ивенты на серверах minecraft. Веселые «крысиные» бега это очень интересно и даже местами забавно, но больше интересно это для админов, наблюдать с высоты как копошатся внизу игроки и кидать им хлеб и мясо. Во время подобных ивентов ЧСВ организаторов поднимается до over 9000. Я, лично, подобные мероприятия недолюбливаю (странно, да?).

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

Как собрать свою JDK, без блекджека и автоматической сборки мусораНа недавно прошедшей Java One Руслан cheremin рассказывал о том, что разработчики Disruptor используют JVM без сборщика мусора. У них на то были свои причины, которые не имеют к этому топику никакого отношения.

Я же давно хотел поковыряться в исходниках виртуальной машины, и выпиливание из неё GC – отличное начало. Под катом я расскажу вам, как собрать OpenJDK, выпилить из неё сборщик мусора и снова собрать. Ближе к концу даже будет дан ответ на наверняка пришедший вам в голову вопрос «зачем».

Читать полностью »

Измерение производительности Play Framework 2.0

Я уже рассказывал о программной платформе Typesafe Stack 2.0. В том посте шла речь об одном из компонентов платформы — фрэймворке Akka 2.0, реализующем модель акторов на JVM. Сегодня я хочу написать о возможностях другой составляющей Typesafe Stack — фрэймворке Play 2.0. Хотя о функциональности данного компонента уже рассказывали здесь и здесь, тема производительности решений под управлением Play 2.0 по-моему осталась не раскрытой.

Тестирование фрэймворка будет проводиться с помощью простейшего приложения разработанного на его основе. В результате выполнения тестов необходимо ответить на следующие вопросы. Какое максимально возможное количество одновременных подключений? Сколько оперативной памяти потребляют эти подключения? Сколько запросов в единицу времени может обработать тестируемое приложение?
Читать полностью »

Встречайте очередной 16-й выпуск подкаста «Разбор Полетов»
Сегодня в выпуске:

  • У нас ничего нет, кроме цепей [1]
  • Если не можешь запомнить — записывай [1]
  • Полезняшки [StackTrace for iPad] [Mosh]
  • 54 метра [1]
  • Как потратить миллион [1]
  • Будущее уже здесь [1]

НашиЧитать полностью »

Здравствуйте! С вами очередной (а для большинства из вас первый) выпуск подборки новостей на тему высоких технологий за авторством блогера Vinndimon с сайта Gamersweb.ru. Новые выпуски данной подборки выходят каждый четверг, и содержат в кратком формате самые приглянувшиеся автору новости IT-индустрии за прошедшую неделю. Стоит упомянуть, что данный дайджест рассчитан на широкую аудиторию, автор старался рассказывать о событиях максимально простым, обывательским языком.Ну что, не будем растягивать вступление до неприличных величин и просто начнём?Читать полностью »

Многие знают, что назревающий возможный скандал между крупными игроками IT-рынка Google и Oracle, подспудной причиной которого стала популярная платформа Android, вылился в суд между корпорациями, который начался в понедельник 16 апреля. Суть претензий Oracle заключается в том, что компания, купив в 2009 году Sun Microsystems, приобрела авторские права на язык программирования Java и теперь интернет-гигант незаконно использует технологии Java в Android, нарушая, таким образом, патенты Oracle.

Не вдаваясь в подробности, собственно юридических вопросов патентного права, кажется любопытным проследить логику адвокатов Oracle в намерении доказать, что Google отнюдь не начинала с чистого листа в Android, а исходный код системы, как минимум, содержит прямые вставки непосредственно из исходного кода Java. Всего, если отметить ради интереса, Oracle обвиняет Google в копировании 103 400 строк Java-кода (подробное описание иска можно посмотреть в этом pdf-документе)

Итак, после первичного заявления адвокатов Oracle о сознательном отказе от патентных отчислений в пользу законного владельца технологий, рассмотрение вопроса стало более конкретным. В суд был приглашен Джошуа Блох, работающий в данный момент в Google и должность которого в корпорации обозначена как Chief Java Architect at Google (при этом не лишним будет отметить то обстоятельство, что Блох восемь лет проработал в Sun, перед тем как перейти на работу в интернет-гиганте).
Читать полностью »

JavaOne Уставшие, но довольные члены команды JetBrains вернулись сегодня с одного из знаковых событий для всего Java-сообщества — конференции JavaOne Russia 2012 в Москве.

В течение двух дней наши ведущие разработчики общались с посетителями конференции на стенде компании и отвечали на многочисленные вопросы не только о «флагманском» продукте JetBrains — одной из лучших сред для разработки на Java — IntelliJ IDEA, но и о новом, объектно-ориентированном языке со статичной типизацией Kotlin, который предназначен для разработки на платформе Java.

Читать полностью »

Размеры объектов в Java уже обсуждались на Хабре, например, здесь или здесь. Мне бы хотелось подробнее остановиться на размерах многомерных массивов — простая вещь, которая для меня стала неожиданной.

Оптимизируя вычислительный алгоритм по памяти, я наткнулся на то, что при определённых (вполне разумных) входных параметрах создаётся массив float[500][14761][2]. Сколько он может занимать в памяти (на HotSpot 1.6.0_26 32bit, если кому интересно)? Я примерно прикинул, что 500*14 761*2*sizeof(float) = 500*14 761*2*4 = 59 044 000 байт плюс какой-то оверхед. Решив проверить, как на самом деле, я воспользовался Eclipse Memory Analyzer (невероятно волшебная вещь, рекомендую!) и обнаружил, что «Retained Heap» для этого массива составляет 206 662 016 байт! Неплохой оверхед — 350%. Посмотрим, почему так получилось.
Читать полностью »

Большая часть кода Android приложения работает в контексте компонент, таких как Activity, Service, ContentProvider или BroadcastReceiver. Рассмотрим, как в системе Android организованно взаимодействие этих компонент с потоками.

При запуске приложения система выполняет ряд операций: создаёт процесс ОС с именем, совпадающим с наименованием пакета приложения, присваивает созданному процессу уникальный идентификатор пользователя, который по сути является именем пользователя в ОС Linux. Затем система запускает Dalvik VM где создаётся главный поток приложения, называемый также «поток пользовательского интерфейса (UI thread)». В этом потоке выполняются все четыре компонента Android приложения: Activity, Service, ContentProvider, BroadcastReceiver. Выполнение кода в потоке пользовательского интерфейса организованно посредством «цикла обработки событий» и очереди сообщений.
Читать полностью »

Открою не Америку, но шкатулку Пандоры: в Java-коде много бойлерплейта. Типовые геттеры, сеттеры и конструкторы, методы ленивой инициализации, методы toString, hashCode, equals, обработчики исключений, которые никогда не выбрасываются, закрывалки потоков, блоки синхронизации. Проблема заключается даже не в том, чтобы написать всё это — современные среды разработки справляются с такими задачами нажатием нескольких клавиш. Сложность в поддержании бойлерплейта в актуальном состоянии по мере внесения модификаций в код. А в некоторых случаях (многопоточность, реализация методов hashCode и equals) и сам шаблонный код написать без ошибок — далеко не простая задача. Одним из решений проблемы является генерация кода, и в этой статье я расскажу про проект Lombok — библиотеку, которая не только может избавить вас от бойлерплейта, но и сделать это максимально прозрачно, с минимальной конфигурацией и, что немаловажно, с поддержкой на уровне среды разработки.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js