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

Продолжаем рассказ о языке цейлон. В первой части статьи Сeylon выступал как гость на поле Kotlin. То есть брались сильные стороны и пытались их сравнить с Ceylon.

В этой части Ceylon выступит как хозяин, и перечислим те вещи, которые близки к уникальным и которые являются сильными сторонами Ceylon.

Поехали:

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

Наш сегодняшний собеседник – Dave Cramer, один из ключевых контрибьюторов в PostgreSQL, автор и мэнтейнер драйвера JDBC для Посгреса на протяжении более 15 лет.

Dave не очень часто выступает на публике. Нам крупно повезло, он согласился приехать на PG Day'17 Russia, чтобы провести практикум / мастер-класс по оптимизации и эффективному использованию Java в PostgreSQL вместе со своими коллегами-контрибьюторами в pgjdbc, Álvaro Hernández Tortosa и Владимиром Ситниковым. Не менее интересным намечается доклад Дэйва, посвященный скрытым возможностям драйвера.

Беседа получилась интересная. Дэйв – очень лаконичный собеседник, отвечающий коротко и по делу. Нам удалось обстоятельно поговорить о текущем состоянии дел в разработке драйвера JDBC и роли Дэйва в этом процессе. Он также поделился своим мнением о применении Java для разработки хранимых процедур и видением текущего состояния международного сообщества PostgreSQL. Не оставили мы без внимания и традиционный анонс предстоящего мастер-класса.

«Мое самое главное испытание – не сломать драйвер» — Dave Cramer о разработке драйвера JDBC для PostgreSQL - 1

PG Day: Dave, расскажи вкратце о себе: кто ты, чем занимаешься, как проводишь свободное время?

Dave: Привет, меня зовут Дэйв Крамер, я работаю с языком PostgreSQL уже 15-16 лет, начиная с 2000-го года, и основной сферой моей деятельности здесь является работа с драйвером JDBC, потому что раньше я был программистом Java. Я также занимался некоторыми процедурными языками, например, pl/R. Что меня интересует в PostgreSQL? Продвижение сообщества, его развитие.
Читать полностью »

В этой статье мы рассмотрим, как загружать классы (в том числе, фрагменты) из сети во время выполнения программы, и использовать их в своем Android-приложении. Область применения подобной технологии на практике — это отдельная тема для разговора, мне же сама по себе реализация данной функциональности показалась довольно интересной задачей.

Приступим.

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

Приветствую, читатель!

Хочу познакомить тебя с молодой, но многообещающей библиотекой Replication Framework для платформы .NET (возможно, при наличии достаточного интереса к теме в дальнейшем будет также реализована Java-версия). Библиотека является портабельной (portable) и может быть использована в любом проекте под Microsoft .NET или Mono.

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

image

* Примечание для модераторов. В основе своей публикация несёт обучающий характер, а не рекламный, пожалуйста, не убирайте её из соответствующих хабов по разработке. Если же какие-то участки текста, на ваш взгляд, несут чёткий оттенок пиара, то укажите на них в личных сообщения автору, они будут откорректированы. Спасибо за понинимание!
Читать полностью »

GeekUniversity открывает набор студентов на факультет Java-разработки - 1

В нашем онлайн-университете для программистов открылся новый факультет. Теперь в GeekUniversity студенты смогут освоить Java-разработку на Middle-уровне и гарантированно начать карьеру сразу после обучения.

GeekUniversity — совместный образовательный проект Mail.Ru Group и IT-портала GeekBrains. Программу обучения и спецкурсы для факультета разрабатывают Avito, Альфа-банк, МТС, Тинькофф, DeliveryClub.
Читать полностью »

Пишем Guard - 1

Привет!

Есть несколько способов проверять аргументы на правильность. Например, для проверки на null можно использовать:

  1. if (!ReferenceEquals(arg, null)) throw…
  2. Code Contracts: Contract.Requires(!ReferenceEquals(arg, null))
  3. Guard.IsNotNull(arg, nameof(arg))

В статье я рассмотрю только третий вариант (все примеры кода — для C#, однако некоторые из них будут полезны и в Java).

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

Всем привет, к прошлой статье о наследии StringBuffer в комментариях оставили интересную ссылку. В этой статье есть интересный бенчмарк, который я изменил для придания большей драматичности:

@BenchmarkMode(Mode.Throughput)
@Fork(1)
@State(Scope.Thread)
@Warmup(iterations = 10, time = 1, batchSize = 1000)
@Measurement(iterations = 40, time = 1, batchSize = 1000)
public class Chaining {

    private String a1 = "111111111111111111111111";
    private String a2 = "222222222222222222222222";
    private String a3 = "333333333333333333333333";

    @Benchmark
    public String typicalChaining() {
        return new StringBuilder().append(a1).append(a2).append(a3).toString();
    }
    
    @Benchmark
    public String noChaining() {
        StringBuilder sb = new StringBuilder();
        sb.append(a1);
        sb.append(a2);
        sb.append(a3);
        return sb.toString();
    }

}

Результат:

Benchmark                  Mode  Cnt      Score      Error  Units
Chaining.noChaining       thrpt   40   8408.703 ±  214.582  ops/s
Chaining.typicalChaining  thrpt   40  35830.907 ± 1277.455  ops/s

Итого, конкатеницая через цепочку вызовов sb.append().append() в 4 раза быстрее… Автор из статьи выше утверждает, что разница связана с тем, что в случае цепочки вызовов генерируется меньше байткода и, соответственно, он выполняется быстрее.
Ну что ж, давайте проверим.
Читать полностью »

Вводная

Мне часто в проектах приходится сталкиваться с фреймворками по работе с БД. Концептуально, эти фреймворки можно разбить на 2 больших класса:

  • ORM-ориентированные
  • SQL-ориентированные

Некоторые из них хороши, какие-то не очень. Но субъективно могу сказать: SQL-ориентированные уступают в развитии ORM-ориентированным. Подчеркну, в развитии, а не в возможностях. Хоть изменить эту чашу весов и не получится, но предложить необычный взгляд на мир SQL-ориентированного подхода — вполне. Кому интересно, добро пожаловать под кат
Читать полностью »

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

Создаём динамическую обложку ВКонтакте - 1
На примере моего пустого сообщества-песочницы
Читать полностью »

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

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

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


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