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

Первая дошедшая до нас фотокарточка была чёрно-белой и размытой. Потом в фотографию пришла резкость. Позже – цвет. Ещё один шаг вперёд – цифра. Популярность и распространение «светописи» постоянно росли и растут. Вот уже и коты делают селфи. Что дальше? А дальше (вернее – прямо сейчас) цифровые снимки, которые, помимо миллионов цветных точек, хранят информацию о глубине запечатлённого на них пространства.

Это открывает потрясающие возможности. Среди них – эффекты движения, такие, как параллакс и «наезд-отъезд». В «глубинах» снимков таятся новые подходы к художественным фильтрам, к настройке резкости, к редактированию изображений, к измерениям по фото. И это – только начало.
Читать полностью »

Сегодня речь пойдет снова об этом же элементе, а так же немного об оптимизации самих игр в HTML5.

HTML часть

В современных браузерах для отрисовки в canvas используются мощи видеокарты, но, не всегда по умолчанию они включены. Можно залезть в настройки браузера и проверить. Для того, чтобы элемент вызывал такую обработку, можно в HTML добавить элементы 3D трансформации объекта. Отличным способом ускорения может (но не факт) послужить такая вот модификация канваса:

 canvas.style.WebkitTransform= 'translate3d(0,0,0)';
 ... много подобных параметров
 canvas.style.transform= 'translate3d(0,0,0)';

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

Я обратил внимание, что люди, когда они пишут свой компаратор, очень часто любят сравнению чисел предпочитать их вычитание. Такой подход лаконичен и краток, но к сожалению, не всегда корректно работает, поэтому использовать его нельзя. Я сам когда-то на это попадался, и вижу это настолько часто, что решил написать заметку.

Рассмотрим следующий код:
Читать полностью »

Уже не мало нашумел Kotlin в мире программирования, не мало профессиональных инженеров уже обратил на него внимание, но также есть и те кому он не симпатизирует.
Kotlin для начинающих - 1
В данном топике я бы хотел обратить внимание тех начинающих программистов которые возможно только делают свой выбор языка программирования, которому бы хотели посвятить свою жизнь так сказать.
Читать полностью »

ОС Фантом — экспериментальная операционная система, содержащая на прикладном уровне виртуальную байткод-машину в персистентной оперативной памяти.

Один из двух ключевых запланированных для ОС Фантом путей миграции существующего кода — преобразование байткода Java в байткод Фантом.

Надо сказать, что эти виртуальные машины изрядно, хотя и совершенно случайно, похожи. Виртуальная машина Фантома была спроектирована тогда, когда про Явскую я ещё ничего не знал, но, наверное, сходство целей привело к сходству принятых решений.

Обе машины — стековые. Обе оперируют двумя отдельными стеками — стеком для работы с объектами (на стеке лежат только ссылки), и бинарным стеком — для вычислений. Машина Фантома имеет также отдельные стеки для фреймов функций и ловушек исключений. Как эта часть устроена в JVM, я не знаю до сих пор, но полагаю, что вряд ли кардинально отличным образом.

Естественно, что и набор операций стековых машин местами схож как две капли.

Но, безусловно, есть и весьма существенные отличия.

Во-первых, виртуальная машина Фантома предназначена для работы прикладного кода в менее дружественной среде. Ява исходит из того, что каждая программа живёт в отдельном адресном пространстве, и всё, что вокруг — “наш” код. Фантом допускает прямые вызовы между приложениями разных пользователей и разных программ, что требует более жёсткого отношения к некоторым аспектам виртуальной машины, включая тот же вызов, да и интерфейс объекта вообще. Например, мы не можем полагаться на то, что вызванный метод ведёт себя “прилично” — нельзя давать ему доступ в свой стек, нельзя полагаться на наличие или отсутствие возвращаемого значения. Нельзя гарантировать различие между методом, функцией и статической функцией. То есть, мы можем предполагать, что именно мы вызываем, но что нам «подсунули» с той стороны — неизвестно.

В силу всего сказанного, вызов в Фантоме унифицирован абсолютно — это всегда вызов метода (есть this и есть класс), и всегда возвращается значение, которое для void метода равно null и явно уничтожается вызывающим кодом. Это гарантирует, что какая бы ошибка вызова не случилась, что бы не подвернулось в качестве предмета вызова, протокол вызова и возврата будет соблюдён.
Читать полностью »

Я часто собеседую разработчиков и часто задаю им простой, как кувалда, вопрос — как внутри работает JOIN в SQL? В ответ я обычно слышу бессвязное мычание про волшебные деревья и индексы, которые быстрее. Когда-то мне казалось, что каждый программист специалист должен знать то, с чем работает. Впоследствии жизнь объяснила мне, что это не так. Но мне все еще не понятно, как можно годами теребить базёнку, даже не догадываясь, а что там у нее «под капотом»?

Я верю, что лично вы, мой читатель — не такой. Вы-то уж точно знаете всю подноготную этих СУБД. Ну, может быть, подзабыли кусочек — но ничего страшного, с кем не бывает. Так давайте же, как интеллигентные люди, вместе повторим, как же работают эти джойны и даже сами реализуем парочку алгоритмов.

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

Производительность и многопоточность на Java-конференции JPoint 2016 - 1

Всего 8 недель осталось до крупнейшей в России Java-конференции JPoint 2016. Я уже рассказывал на хабре, что нас с вами ожидает:

  • два дня под одной крышей в центре Москвы
  • около 40 докладов в четырёх параллельных залах. Мы хотели сделать 36 докладов, как на Joker, но видимо всё же, уплотним сетку и сделаем 44 доклада
  • море общения с коллегами — около 1000 Java-программистов приедут к нам отовсюду

Я попробую потихоньку рассказать про основные темы JPoint и начну с нашей любимой — производительность и многопоточность.

На эту тему уже анонсированы следующие доклады:

  • Алексей Шипилёв, Oracle — Если не Unsafe, то кто: восход VarHandles
  • Сергей Куксенко, Oracle — Quantum Performance Effects, level up. За пределами ядра
  • Руслан Черёмин, Deutsche Bank — Escape Analysis и скаляризация
  • Владимир Ситников, NetCracker — Ну и производительность у вашего OpenSource!
  • Volker Simonis, SAP — HotSpot Intrinsics
  • Алексей Шипилёв, Oracle — The Lord of the Strings: Two Scours
  • Тагир Валеев — Stream API puzzlers
  • Владимир Иванов, Oracle — Native код, Off-heap данные и Java
  • Владимир Озеров, GridGain — (Почти) неблокирующая синхронизация

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

Целью данной публикации не является полный анализ синхронизаторов из пакета java.util.concurrent. Пишу её, прежде всего, как справочник, который облегчит вхождение в тему и покажет возможности практического применения классов для синхронизации нитей.

В java.util.concurrent много различных классов, которые по функционалу можно поделить на группы: Concurrent Collections, Executors, Atomics и т.д. Одной из этих групп будет Synchronizers (синхронизаторы).

Справочник по синхронизаторам java.util.concurrent.* - 1

Синхронизаторы – вспомогательные утилиты для синхронизации нитей, которые дают возможность разработчику регулировать и/или ограничивать работу нитей и предоставляют более высокий уровень абстракции, чем основные примитивы языка (мониторы).
Читать полностью »

В пятницу, 26 февраля (да, уже завтра!), в 20:00 в петербургском офисе компании Oracle пройдет встреча JUG.ru c разработчиками языка Kotlin Андреем Бреславом и Дмитрием Жемеровым. Андрей — вообще самый главный человек в Kotlin, возглавляет разработку языка, а Дмитрий — возглавляет разработку плагина к IntelliJ IDEA. Так что у нас будет всем котлинам котлин!

Тема встречи — недавний и долгожданный релиз языка Kotlin. Это уже никакая не бета и не RC, это полноценный Final Release. И поэтому встреча тоже называется очень просто:
[Питер] Встреча JUG.ru с разработчиками Kotlin - 1
Для тех, кто всё проспал:
Kotlin — новый язык программирования для JVM и Android, выпущенный компанией JetBrains неделю назад. Выпуску предшествовало несколько лет разработки, ребята из JetBrains довольно много рассказывают про Kotlin на конференциях.

Докладчики

Дмитрий Жемеров работает в JetBrains с 2003 года и успел поучаствовать в разработке многих проектов, включая IntelliJ IDEA, PyCharm, WebStorm и другие. Сейчас он руководит командой, которая делает Kotlin-плагин для IntelliJ IDEA, а также в соавторстве со Светланой Исаковой пишет книгу о Kotlin.

Андрей Бреслав возглавляет разработку языка Kotlin в компании JetBrains. Раньше преподавал и в университете и в старшей школе; теперь вместо этого выступает на различных конференциях, рассказывая о своём проекте и о фундаментальных принципах, лежащих в основе профессии разработчика ПО.

[Питер] Встреча JUG.ru с разработчиками Kotlin - 2

Программа встречи

Встреча будет состоять из 4 частей, и целиком будет посвящена языку Kotlin.
Читать полностью »

В пятницу, 19 февраля, мы выпустили бета-версию IntelliJ IDEA 16. Учитывая то, что с момента выхода IntelliJ IDEA 15 прошло немногим более трех месяцев, вы будете приятно удивлены тем, что мы успели сделать за это время. Мы приглашаем вас скачать свежую версию прямо сейчас и самостоятельно попробовать все улучшения, о самых главных из которых я с удовольствием расскажу далее.

image

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


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