Метка «java» - 5

После моей первой публикации прошло два месяца. После него, я немного сменил приоритет на одну задачу. А именно реализация дебаггера, хотя бы для 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: кеш

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

в 14:54, , рубрики: java, string, метки: ,

Всем привет. Последние события в Украине как-то отбросили меня от хабра, но вот, все, более менее, наладилось и я, вернувшись к привычному ритму работы, вспомнил о парочке своих постов в черновиках. В связи с выходом 8-й версии явы, пост, возможно, уже несколько устарел, но не пропадать же добру.
Итак, как-то вечером, оптимизируя очередной кусочек кода — случайно заглянул в String и обнаружил, что класс строки уже не тот. Так как строка, пожалуй, один из самых распространенных типов, думаю многим будет интересно узнать об изменениях.

Оптимизирован метод String.split()

Метод split строки стал быстрее работать для односимвольного параметра. Теперь в методе вообще не будет использоваться регексп и будет применен indexOf в цикле.
Было:

public String[] split(String regex, int limit) {
        return Pattern.compile(regex).split(this, limit);
}

Стало:

public String[] split(String regex, int limit) {
    if (((regex.value.length == 1 && 
           ".$|()[{^?*+\".indexOf(ch = regex.charAt(0)) == -1) || ...)) {
            ...
            while ((next = indexOf(ch, off)) != -1) {
                ...
            }
            ...
            return result;
    }
    return Pattern.compile(regex).split(this, limit);
}
2 поля удалены

Начиная с 6-го апдейта 7-й явы из класса строки были удалены 2 поля:

private int offset;
private int count;

Как вы, наверное, помните эти поля использовались при вызове метода substring. Назначение полей — уменьшение сложности метода и попытка избежать создания нового массива символов строки используя ссылку на уже существующий массив. Что, в свою очередь, в некоторых ситуациях могло порождать известную утечку памяти. Теперь же размер строки на 8 байт меньше и проблема утечки навсегда решена.

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

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

Программа курса

Курс состоит из 45 лекций разбитых на 9 модулей по темам

  1. Модуль: Основы
    • Лекция #1.1: целочисленные типы, типы с плавающей точкой, bit operations
    • Лекция #1.2: массивы, java.lang.String, format
    • Лекция #1.3: for/switch/while, boolean logic(|, ||, &, &&, !, ^)
    • Лекция #1.4: порядок выполнения операторов, построение internal DSL
  2. Модуль: Процедурное программирование

Мифы и легенды про Big Data
Один из наших кластеров для пилотных задач (Data node: 18 servers /2 CPUs, 12 Cores, 64GB RAM/, 12 Disks, 3 TB, SATA — HP DL380g)

— Что такое Big Data вообще?
Все знают, что это обработка огромных массивов данных. Но, например, работа с Oracle-базой на 20 Гигабайт или 4 Петабайта — это ещё не Big Data, это просто highload-БД.

— Так в чём ключевое отличие Big Data от «обычных» highload-систем?
В возможности строить гибкие запросы. Реляционная база данных, в силу своей архитектуры, предназначена для коротких быстрых запросов, идущих однотипным потоком. Если вы вдруг решите выйти за пределы таких запросов и собрать новый сложный, то базу придётся переписывать – или же она умрёт под нагрузкой.

— Откуда берётся эта новая нагрузка?
Если чуть углубиться в архитектуру, то можно увидеть, что традиционные базы данных хранят информацию очень дисперсионно. Например, у нас номер абонента может быть на одном сервере в одной таблице, а его баланс — в другой таблице. Быстродействие требует максимального разбиения данных. Как только мы начинаем делать сложные join'ы, производительность резко падает. Читать полностью »

Внесу и свой вклад в тренд темного программирования.
Многим из вас знакома дилемма: использовать ли DI в своем проекте или нет.
Поводы перехода на DI:

  • создание развитой системы авто-тестов
  • повторное использование кода в различном окружении, в том числе в различных проектах
  • использование 3rd-party библиотек, построенных на DI
  • изучение DI

Доводы не использовать DI:

  • усложнение понимания кода (поначалу)
  • необходимость конфигурирования контекста
  • изучение DI

Допустим, у нас есть большой рабочий проект, принято решение: переводить на DI. Разработчики чувствуют свой потенциал, уровень мидихлориан в крови зашкаливает.
Перевод legacy проекта на Dependency Injection. Путь Ситха
Путь тебя ждет тернистый и долгий, мой юный падаван.

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

Добрый день.
Меня зовут Головач Иван, я руковожу небольшой образовательной компанией. Мы занимаемся удаленным Java-образованием.

Хотелось бы услышать мнение сообщества по поводу

  1. программы курса «Multicore programming in Java»
  2. литературы к курсу

Кратко о курсе: стартует 28 апреля, ведется в режиме вебинаров дважды в неделю в 19.00-22.00, состоит из 16 лекций по 2.5 часа (=40 лекционных часов), к каждой лекции дается расширенное задание, рассчитан на Java Junior/Middle.
Читать полностью »

Представляю вам свой open-source проект — JPHP. Это альтернативная реализация PHP для JavaVM с поддержкой JIT. Я начал проект в одиночку в октябре 2013 года и за 4 месяца реализовал компилятор php в байткод JVM. Язык поддерживается на уровне PHP 5.3, частично поддерживаются возможности PHP 5.4 и 5.5. По своей идеологии проект напоминает JRuby и Jython.

Я подготовил небольшую презентацию, которая расскажет о проекте и не отнимет у вас много времени:

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

в 10:51, , рубрики: android, java, long polling, nginx, метки: , , ,

Прочитав статью, стал внедрять в web проекты Long Polling. На nginx крутится серверная часть, на javascript клиенты слушают каналы. Прежде всего это было очень полезно для личных сообщений на сайте.
Потом в поддержку web проектов стали разрабатываться приложения под Android. Встал вопрос: как реализовать многопользовательский проект, в котором равнозначно участвовали бы как браузерные клиенты, так и мобильные приложения. Так как Long Polling уже был внедрён в браузерные версии, решено было написать java модуль и для Android.
Читать полностью »

Привет!

Вместе с хорошим известием для Северного полушария, что продолжительность светлого времени суток увеличилась, мы хотим рассказать о релизе IntelliJ IDEA 13.1, случившемся на этой неделе. Но перед рассказом о новинках хотелось бы отметить еще одно, весьма ожидаемое всем Java-cообществом, событие…

IntelliJ IDEA 13.1: Весеннее обновление Читать полностью »


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