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

Добрый день.
15 мая была проведен первый вебинар (из 16) курса «Multicore programming in Java». Вебинары, видео в записи, исходный код программ и проверка заданий доступны только записавшимся на курс (запись еще открыта, свяжитесь по контактам внизу страницы). Но тут я бы хотел опубликовать материалы, упоминавшиеся на лекции: ссылки на источники, термины, картинки, задание. Возможно кто-то сочтет их полезными для себя.

Введение

“Железо”

Стоит «посмотреть картинки» в следующих источниках

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

Дорог ли native метод? «Секретное» расширение JNI
Для чего Java-программисты прибегают к native методам? Иногда, чтобы воспользоваться сторонней DLL библиотекой. В других случаях, чтобы ускорить критичный алгоритм за счет оптимизированного кода на C или ассемблере. Например, для обработки потокового медиа, для сжатия, шифрования и т.п.

Но вызов native метода не бесплатен. Порой, накладные расходы на JNI оказываются даже больше, чем выигрыш в производительности. А всё потому, что они включают в себя:

  1. создание stack frame;
  2. перекладывание аргументов в соответствии с ABI;
  3. оборачивание ссылок в JNI хендлы (jobject);
  4. передачу дополнительных аргументов JNIEnv* и jclass;
  5. захват и освобождение монитора, если метод synchronized;
  6. «ленивую» линковку нативной функции;
  7. трассировку входа и выхода из метода;
  8. перевод потока из состояния in_Java в in_native и обратно;
  9. проверку необходимости safepoint;
  10. обработку возможных исключений.

Но зачастую native методы просты: они не бросают исключений, не создают новые объекты в хипе, не обходят стек, не работают с хендлами и не синхронизованы. Можно ли для них не делать лишних действий?

Да, и сегодня я расскажу о недокументированных возможностях HotSpot JVM для ускоренного вызова простых JNI методов. Хотя эта оптимизация появилась еще с первых версий Java 7, что удивительно, о ней еще никто нигде не писал.
Читать полностью »

После моей первой публикации прошло два месяца. После него, я немного сменил приоритет на одну задачу. А именно реализация дебаггера, хотя бы для Mono .NET

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

В прошлом ноябре было аннонсировано сотрудничество Jelastic и RedHat в области стандартизации подключаемых картриджей для платформ как сервис (PaaS). В результате этого взаимодействия появится поддержка картриджей OpenShift на платформе InfoboxCloud Jelastic. Это позволит разработчикам технологий и сервисов предоставлять решения для различных облачных платформ без переписывания и получать доступ к широчайшиму количеству пользователей. Снижение временных затрат компаний на адаптацию и упаковку программного обеспечения для различных облачных платформ позволит проще и быстрее доставлять технологии пользователям и сфокусироваться на решении реальных задач.
Openshift Cartridge Standard теперь и в Jelastic
Благодаря стандартизации на платформе Jelastic раньше будут появляться новые технологии. Среди них в новом релизе ожидаются:

  • Neo4j Server: масштабируемая графовая база данных
  • Redis: хранилище «ключ-значение»
  • Apache Cassandra: масштабируемая высокодоступная база данных
  • Jetty (8 и 9): веб-сервер со встроенным HTTP сервером и сервлет-контейнером
  • Python (2.7, 3.3, 3.4)
  • JBoss 7: сервер приложений Java от RedHat
  • Varnish: кеш

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

Oracle выиграла аппеляцию против Google
Корпорация Oracle одержала победу в ключевом деле против Google. Аппеляционный суд США постановил: Oracle обладает авторским правом на части языка программирования Java, использованные Google при разработке ОС Android. «Мы пришли к выводу, что набор команд, заставляющий компьютер выполнить желаемые операции, может содержать выражения, подвергаемые авторскому праву», — комментирует судья федерального округа Кэтлин О'Мэлли.

В 2010 Oracle подала в суд на Google за нарушение авторских прав на части Java для Android. Oracle оценила ущерб в один миллиард долларов.

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

Все больше подробностей становится известно про Jelastic 2. В значительном обновлении платформы Jelastic появится доступ по SSH. Об этом сегодня на странице Facebook написал Руслан Синицкий, основатель и технический директор Jelastic.
Jelastic 2 SSH

При этом будет возможно управлять различными окружениями с единой аутентификацией SSH. Это безопасно и даже не требует выделения публичного IP–адреса. Эту возможность очень просили многие пользователи JelasticЧитать полностью »

в 15:59, , рубрики: java, struct, value types, метки: ,

Duke
Этот пост — вольно-краткий перевод документа State of the Values, предложения по введению типов-значений в JVM и сам язык Java, который написали Джон Роуз, Брайан Гоетц и Гай Стил, разбавленный моими мыслями. Опущены детали предложения по реализации типов-значений на уровне байт-кода, что не очень интересно для большинства Java-программистов.


Важнейшая мысль: объектная (ссылочная) идентичность нужна только для поддержки изменяемости объектов. Объект может изменить состояние, но по ссылке мы всегда можем проверить, что это «тот же» объект. Поэтому типы-значения будут строго неизменяемые.

Предполагаемые варианты использования типов-значений:

  • Числа: комплексные, беззнаковые, 128-битные, с фиксированной запятой и т. д. Все, что не описывается имеющимися примитивами.
  • Алгебраические типы: Optional<T>, Choice<T,U>, перечисления
  • Кортежи: пары, тройки, ...
  • Итераторы, курсоры
  • «Уплощение» сложных структур

Целевые фичи:Читать полностью »

Это пост заметка о том, как я познакомился с языком Kotlin, какие использовал для этого ресурсы, инструменты, и как я собрал его в jar и запустил в консоли.

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

Приступим к знакомству. Для начала понадобится IDE Idea.
Читать полностью »

В продолжение предыдущей статьи про развертывание Ratpack приложения на Heroku, сегодня я расскажу про использования плагина Gradle. Это был трудный опыт по развертыванию простого Ratpack приложения на Heroku PaaS. Мы рылись в хитросплетениях buildpack's для развертывания на Heroku.Хорошие новости в том, что это бельше не обязательно.
В этой статье я покажу более простой способ развертывания. В этом методе не необходимости явно использовать Heroku Toolbelt и custom'ые buildpack's. Так же больше не нужно иметь Ruby, RVM, или множество других связанных с Ruby технологий, которые не нужны Java/Groovy разработчикам, им даже знать об этот нет необходимости.
Читать полностью »

Скажу сразу, что стандартная реализация такого взаимодействия — существует.

Однако, поскольку эта статья — продолжение темы "Простой вызов удалённых сервисных методов в одностраничных приложениях", здесь будет приведена альтернативная схема взаимодействия, необходимая для замены ajax на вебсокеты, в контексте подхода(jrspc), описанного в вышеупомянутой теме.

В первой статье — был описан механизм вызова сервисных методов, с использованием ajax.

В этой статье — описано, как можно реализовать данный механизм, с заменой ajax на вебсокеты,
не меняя код бизнес-логики приложения.

Такая замена даёт более быстрое соединение(тесты в конце), экономию серверной памяти, и добавляет возможность вызывать методы клиента с сервера.

Для демонстрации, написано небольшое чат-приложение, с исходным кодом на гитхабе.
на примере разбора которого, я попытаюсь объяснить, как реализованы клиентская и серверная части такого взаимодействия.
Приложение работает на сервере tomcat 7.042.
Поддерживает https и wss (сертификат неподтверждённый), и не ведёт логов на сервере.
Читать полностью »


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