Pull to refresh

Глубокое обучение на Kotlin: вышла альфа-версия KotlinDL

Reading time 3 min
Views 5.5K
JetBrains corporate blog Kotlin *

Всем привет!


На днях мы выпустили первую альфа-версию KotlinDL, фреймворка для глубокого обучения нейросетей, API которого мы старались сделать максимально похожим на Keras (фреймворк на Python поверх TensorFlow).


В KotlinDL вы найдете простые API как для описания, так и для тренировки нейронных сетей. За счет высокоуровневого API и аккуратно подобранных значений по умолчанию для множества параметров мы надеемся снизить порог входа в глубокое обучение на JVM. Вот так, например, выглядит тренировка и сохранение простой нейросети, написанной при помощи KotlinDL:

Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Comments 4

JVM on OpenCL

Reading time 1 min
Views 901
Lumber room

Здравствуйте, уважаемое сообщество хабрахабра !


Читал тут обзор OpenCL, нашел упоминание множества оберток, в том числе, для Java.
image
Но еще до прочтения топика, при виде заголовка появилась мысль: «А если все так хорошо, то почему бы не сделать Java Virtual Machine, написанную под OpenCL! Это же, наверняка, позволило бы выполнять байт-код быстрее на определенных конфигурациях».
image
Нашел только один проект, да и тот в зачаточном состоянии, автор которого, видимо, подумал о том же, что и я.
Встречайте: JRE on OpenCL

Как Вы думаете, оправдана ли затея, есть ли смысл и почему никаких движений в этой области?
Total votes 17: ↑12 and ↓5 +7
Comments 4

Scala. Введение

Reading time 12 min
Views 84K
Programming *
Привет хабралюди.

Не так давно я заинтересовался одним из многочисленных ныне языков под JVM — Scala. Причин тому много, основная — всё нарастающее со временем чувство неудобства при работе с cpp-подобными языками. Взгляд мой попеременно падал на Ruby, Groovy, Python, но все они оставляли впечатление инструментов, не совсем подходящих для моего обычного круга рабочих задач (Python-таки хорош, но у нетипизированных языков есть свои ограничения). Scala же, напротив, показалась вполне годным языком. Так как поиск по хабру никаких статей о ней не выловил (было несколько, но мягко говоря не вводных), я решил написать маленький обзор и поделиться им с массами.
По возможности коротко о кажется главном
Total votes 65: ↑56 and ↓9 +47
Comments 106

Jython vs Groovy vs JRuby vs …

Reading time 2 min
Views 2.6K
Lumber room
Господа, внезапно — сабж!? Вопрос вызван тем, что какое-то довольно продолжительное время я был вдалеке от Java-технологий, писал на C++ и Python (и продолжаю писать), но один из курсов университета (конкретнее — component based software development) будет требовать либо одного из JVM-based языков (Java отпадает за неинтересностью) либо .NET языков (отпадает по определению так как Windows у меня нет и не будет). Немного изучив вопрос, пришел к выводу что:
  1. Преимущества в пользу Jython — по большому счету, это Python, который я хорошо знаю и люблю, с возможностью использовать Java классы. Но, если верить слухам, сейчас он почти не развивается. Хотя опять же, кому верить-то?
  2. Преимущества Groovy — новый язык, активно развивающийся, комбинирующий в себе достоинства многих языков и парадигм (тот же Python и Ruby в них входят). Недостатки — новый язык, активно развивающийся ;-) Сравнительно мало документации и кода по сравнению с Python
  3. Преимущества JRuby… я что-то весь в затруднениях, но все о нем говорят. Полная совместимость с Ruby, да. Но Руби я все равно не знаю, так что учить с нуля, так же как и Groovy.
А какие еще мнения есть? Я пока еще не совсем понял, что именно мне нужно для этого курса (хотя ясно, что это что-то должно поддерживать хорошую умную компонентную модель для работы в распределенных средах), но язык, в конце концов, вторичен — хочется чего-то интересного, нового и необычного (не сказать “странного”). Кто что думает? Вопрос довольно практический, потому что 18 января надо начинать писать курсовой проект на этом языке, который я выберу — а его надо еще и изучить хотя бы минимально до этого момента ;-)

Пока начал играться с Groovy и он мне, в принципе, нравится — но возможно, я упускаю что-то существенное, ограничивая себя этим языком?

Всем хабралюдям заранее спасибо за мнения!
Total votes 19: ↑14 and ↓5 +9
Comments 77

JVM изнутри – организация памяти внутри процесса Java

Reading time 2 min
Views 114K
Java *
Наверное, все, работающие с Java, знают об управлении памяти на уровне, что для ее распределения используется сборщик мусора. Не все, к сожалению, знают, как именно этот сборщик (-и) работает, и как именно организована память внутри процесса Java.
Читать дальше →
Total votes 58: ↑39 and ↓19 +20
Comments 16

The Art Of Programming — Выпуск №51 [ VM ] / Производительность

Reading time 1 min
Views 829
Lumber room
Интервью с Алексеем Шипилёвым, сотрудником компании Sun Microsystems.

+ Apache Harmony и OpenJDK
+ Производительность приложения
+ Изобретатели велосипедов

Joshua Bloch — Effective Java http://www.ozon.ru/context/detail/id/5047534/
Total votes 23: ↑21 and ↓2 +19
Comments 3

Джеймс Гослинг: почему Applе отказывается от JVM

Reading time 2 min
Views 2.4K
Java *
Как известно, несколько дней назад компания Apple фактически отказалась от дальнейшей разработки Apple JVM. Прошло более десяти лет с тех пор как Стив Джобс со сцены конференции JavaOne 2000 заявлял, что сделает «лучшую на планете платформу для Java прямо из коробки».

В далёком 2000 году Sun занимала 150-е место в списке крупнейших корпораций Америки, опережая Oracle и Apple, не говоря уже о стартапе Google, который вошёл в список Fortune 500 только в 2005 году.

Что и говорить, времена изменились.
Читать дальше →
Total votes 91: ↑67 and ↓24 +43
Comments 99

C Java в Mac OS X не все так печально

Reading time 1 min
Views 7.5K
Java *
картинка, чтобы не было скучноНе так давно стало известно, что Apple прекращает развитие своей собственной версии JVM. Это событие вызвало широкий резонанс, и было воспринято большинством как однозначный признак заката Java. Да, у платформы сейчас не лучшие времена, разработка новой версии идет не так быстро, как хотелось бы, но умирать еще рано.
И этому появилось подтверждение, снова от Apple: компания активно подключается к проекту OpenJDK c целью создания полноценной открытой Java-машины для Mac OS X.
Если вспомнить, что IBM также подключилась к проекту (покинув Apache Harmony), то можно предположить, что все происходящее — вовсе не закат, а новая жизнь для Java. Ведь JVM прекрасно существует под Windows, не будучи разработанной Microsoft и включенной в поставку системы.
Total votes 51: ↑47 and ↓4 +43
Comments 19

Groovy inspiration — Feel the difference

Reading time 6 min
Views 4.5K
Java *
Sandbox
image

Почему Groovy


Будучи Java разработчиком, некоторое время назад я начал посматривать в сторону других языков программирования, и, думаю об этом размышлял далеко не только я. Некоторые мои знакомые, в свое время имеющие отнюдь не малый опыт в разработке под Java — платформу, решительно начали двигаться по рельсам (Rails), соответственно используя Ruby, кто-то еще подумывает приручить Питона с приложением к нему в виде Django. Появляется достаточно книг о том, как Java — программисту мигрировать в мир динамических языков. Может ли что-то нас остановить?
Читать дальше →
Total votes 48: ↑39 and ↓9 +30
Comments 86

Java Bytecode Fundamentals

Reading time 6 min
Views 60K
Java *
Translation
Разработчики приложений на Java обычно не нуждаются в знании о байт-коде, выполняющемся в виртуальной машине, однако тем, кто занимается разработкой современных фреймворков, компиляторов или даже инструментов Java может понадобиться понимание байт-кода и, возможно, даже понимание того, как его использовать в своих целях. Несмотря на то, что специальные библиотеки типа ASM, cglib, Javassist помогают в использовании байт-кода, необходимо понимание основ для того, чтобы использовать эти библиотеки эффективно.
В статье описаны самые основы, от которых можно отталкиваться в дальнейшем раскапывании данной темы (прим. пер.).
Читать дальше →
Total votes 57: ↑55 and ↓2 +53
Comments 9

Garbage Collection наглядно

Reading time 10 min
Views 276K
Java *
Translation
В последнее время я работаю с клиентами над вопросами настроек JVM. Смахивает ситуация на то, что далеко не все из разработчиков и администраторов знают о том, как работает garbage collection и о том, как JVM использует память. Поэтому я решил дать вводную в эту тему с наглядным примером. Пост не претендует на то, чтобы покрыть весь объем знаний о garbage collection или настройке JVM (он огромен), ну и, в конце концов, об этом много чего хорошего написано уже в Сети.
Читать дальше →
Total votes 70: ↑68 and ↓2 +66
Comments 49

Scala + Processing – интересный способ выучить новый язык

Reading time 4 min
Views 10K
Scala *Processing *
Недавно мне довелось на собственном опыте убедиться: чтобы научиться применять какие-то новые технологии, недостаточно прочитать пару книг по теме, потому что без практики теория мгновенно улетучивается из головы.

Но что можно сделать такого интересного на Scala? На самом деле, выбор не слишком большой. Я как-то придумал небольшую тулзу, неспешно написал ее, и «забил». А через несколько месяцев, к своему стыду, гуглил синтаксис «for loop»…

Я решил, что дальше так дело не пойдет, и нужно найти какие-то небольшие проектики на основные возможности языка. Тут мне и пригодился Processing. Скучные учебные проекты он любому новичку (вроде меня) поможет превратить в визуальные инсталляции. А дальше можно выбрать, что покопать углубленно — например, генерацию фракталов, рендеринг частиц или визуализацию данных.

Я переписал на Scala и выложил на GitHub парочку примеров. На скрине как раз один из них — MSA Fluids. Заинтересовавшихся прошу под кат.

Читать дальше →
Total votes 56: ↑54 and ↓2 +52
Comments 16

JVM падает (2 истории про вызов native library)

Reading time 2 min
Views 2.2K
Java *
Хочу поделиться двумя историями с одинаковым сюжетом, но разными развязками.
Может быть кому то, у кого тоже падает JVM будет полезно

1. Native code вызывается из Явы через JNI. Юнит тест — проходит на ура, приложение (GUI, Swing) крэшится.
Подключаемся через дебагер ddd (это такая оболочка над gdb, ежели кто из яваистов не знает :) ) — видим что падает с длинющим стеком. Выясняем с автором нативной библиотеки, что там они десериализуют через boost (такая библиотека для C++) дерево большой глибины. И там рекурсия.

Возникает идея (не сразу, 3 дня споров и гугления), что при вызове из приложения стек больше и он переполняется. Находим параметер для JVM: -XX:ThreadStackSize=

Работает!

2. Native code вызывается через JNA. Присутствую колбеки обратно в Явы, так как я описывал. Юнит тест бежит, приложение падает!

Читать дальше →
Total votes 33: ↑25 and ↓8 +17
Comments 21

Архитектура памяти: Erlang против Java

Reading time 4 min
Views 12K
Erlang/OTP *
Translation
Я прочитал очень-очень интересную статью «Стратегии управления памятью для Erlang VM». Она была написана в качестве диссертации Джеспером Вильхельмсоном. Я подумал, что было бы неплохо обсудить различия между управлением памятью в Erlang и Java VM от Oracle.
Читать дальше →
Total votes 46: ↑42 and ↓4 +38
Comments 40

«Виртуальные машины» — пятидневный семинар в Петербурге. 25-29 апреля. Участие бесплатное

Reading time 1 min
Views 616
Self Promo
Компания Oracle приглашает вас принять участие в научно-техническом семинаре «Виртуальные машины».

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

Ориентировочный план семинара

1. Обзор и история развития виртуальных машин. Архитектура JVM.
2. Интерпретация и компиляция.
3. Управление памятью.
4. Многопоточность, синхронизация, вызовы библиотечных функций.
5. Многозадачность, кросскомпиляция, ромизация, двоичная конверсия.

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

Семинар пройдет в офисе компании Оракл в Санкт-Петербурге 25-29 апреля. Начало в 13:00 каждый день.
Адрес: Санкт-Петербург 10я Красноармейская 22А, 2 этаж (2022)

Участие бесплатное

По всем вопросам можно обращаться ко мне через ХабраПочту или Елене Блохиной tinyurl.com/43pnynr
Total votes 5: ↑5 and ↓0 +5
Comments 6

Groovy за 15 минут – краткий обзор

Reading time 8 min
Views 345K
Java *
Groovy — объектно-ориентированный язык программирования разработанный для платформы Java как альтернатива языку Java с возможностями Python, Ruby и Smalltalk.

Groovy использует Java-подобный синтаксис с динамической компиляцией в JVM байт-код и напрямую работает с другим Java кодом и библиотеками. Язык может использоваться в любом Java проекте или как скриптовый язык.

Возможности Groovy (отличающие его от Java):

— Статическая и динамическая типизация
— Встроенный синтаксис для списков, ассоциативных массивов, массивов и регулярных выражений
— Замыкания
— Перегрузка операций

[http://ru.wikipedia.org/wiki/Groovy]

Более того, почти всегда java-код — это валидный groovy-код.
Читать дальше →
Total votes 63: ↑55 and ↓8 +47
Comments 52

Миграция с Ruby

Reading time 5 min
Views 7.8K
Social networks and communities
imageУверен, что на Хабре обитает огромное число юзеров, облизывающихся при чтении описаний технологий и архитектур, используемых в молодых, динамичных и, что наиболее важно, быстрорастущих в своей пользовательской базе, компаний. К сожалению, относительно небольшое количество наших соотечественников работает в таких компаниях по всему миру, а те, кто все-таки трудится во внутренней кухне, связаны различными условиями трудовых договоров или банальным NDA, запрещающим сливать публике самые интересные подробности. Тем не менее, я лично знаю большое количество специалистов, особенно заинтересованных в высоких нагрузках и не знающих, где получить эту информацию из первых рук.

Эту проблему можно решить единственным способом — предоставить слово кому-то из менеджеров отдела разработки или любому другому человеку, занимающему адекватно высокий пост и разбирающемуся в разработке, а после — тянуть, тянуть из него все подробности. Примерно так поступили в Information Queue, опросив одного из инженеров Twitter'а — Эвана Уивера (Evan Weaver) о том, почему компания так долго развивавшаяся на «рельсах», решила переключиться на использование других технологий и какие это имело последствия.

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

Итак, история начинается в прошлом году, когда Twitter анонсировал изменения в архитектуре бэкэнда (message queue), а так же заявил о намерении переписать Twitter Storage на Scala, а весной началась работа по переписыванию всего поискового движка. Как часть этих изменений, БД MySQL (лежавшая в основе поиска) была заменена Lucene. И, наконец, совсем недавно команда разработчиков заявила о замене Ruby on Rails в области поиска — на его место встал Java-сервер, который они сами называют Blender. Результатом этой замены стало трехкратное снижение задержки при выполнении поискового запроса.
Читать дальше →
Total votes 72: ↑65 and ↓7 +58
Comments 82

Будущее Лиспа

Reading time 4 min
Views 6.2K
Lisp *
Translation
Это перевод статьи Стивена Дегутиса.

Будущее Lisp


В последнее время я часто стал задумываться о существующих диалектах Lisp и о том, в каком направлении мы двигаемся. В частности, я рассматривал возможность написания очередного диалекта Lisp, и те сферы, в которых бы он пригодился.

Если вы еще не знакомы с ним, Lisp является замечательным семейством языков; его чрезвычайно минималистический синтаксис позволяет нам думать практически на уровне алгоритмов, не заморачиваясь по поводу неочевидного синтаксиса или каких-либо языковых рамок.

Положение на рынке


Традиционно, существует Scheme, который полезен разве что для преподавания в вузах из-за скудности поддерживаемых библиотек, есть также Common Lisp, который представляет из себя ужасную, страшную неразбериху (представьте C++, но с целым морем скобок).
Читать дальше →
Total votes 41: ↑31 and ↓10 +21
Comments 54