Споры насчет преимуществ и недостатков Scala перед Java напоминают мне споры о C против С++. Плюсы, конечно же, на порядок более сложный язык с огромным количеством способов выстрелить себе в ногу, уронить приложение или написать совершенно нечитабельный код. Но, с другой стороны, C++ проще. Он позволяет делать простым то, что на голом C было бы сложно. В этой статье я попытаюсь рассказать о той стороне Scala, которая сделала этот язык промышленным — о том, что делает программирование проще, а исходный код понятнее.
Читать полностью »
Рубрика «java» - 177
No way back: Почему я перешел с Java на Scala и не собираюсь возвращаться
2016-11-11 в 17:49, admin, рубрики: holywar, java, scalaOffensive programming: параноидальное, наступательное, атакующее или беззащитное программирование
2016-11-09 в 15:33, admin, рубрики: defensive programming, edisonsoftware, java, Offensive programming, Блог компании Edison, ненормальное программирование, отладка, Программирование, разработка, тестирование, метки: defensive programming, Offensive programmingКак сделать ваш код лаконичным и послушным одновременно?

Вам когда-нибудь встречалось приложение, которое вело себя очевидно странно? Ну, вы знаете, вы нажимаете на кнопку и ничего не происходит. Или экран вдруг чернеет. Или приложение впадает в «странное состояние» и вам приходится перезагружать его, чтобы все снова заработало.
Если у вас был подобный опыт, то вы вероятно стали жертвой определенной формы защитного программирования (defensive programming), которую я бы хотел назвать «параноидальное программирование». Защитник осторожный и рассудительный. Параноик испытывает страх и действует странно. В этой статье я предложу альтернативный подход: Offensive programming .Читать полностью »
Стоит ли бояться DevOps-а современному QA
2016-11-09 в 8:48, admin, рубрики: java, Блог компании JUG.ru Group, тестирование, Тестирование IT-систем, тесты
Вы слышали про DevOps, но слабо представляете что это такое? Может быть, вы QA-инженер и вас пугает, что спрос на вас может упасть из-за DevOps? Или вы разработчик и хотите прокачать себя и свою команду до внедрения DevOps-а, но не знаете, с чего начать? Ответы под капотом.
На вопросы отвечает Full-stack Engineer в компании ZeroTurnaround, со-ведущий русскоговорящего DevOps подкаста «Two Devs One Ops» Сергей bsideup Егоров (twitter.com/bsideup).
Сергей Егоров:
«… Деплой, изменение инфраструктуры, недостаток знаний о разных частях системы, прозрачность доставки изменений, сложность локальной разработки, “борьба с огнём” после выкатывания на боевые сервера… по каждому из них DevOps даёт ответы и рекомендации»
Читать полностью »
JRuby + Ratpack = ❤️
2016-11-09 в 3:50, admin, рубрики: java, jruby, ratpack, ruby, высокая производительностьJRuby + Ratpack = Love
Многие разработчики на Ruby знают как обстоят дела с асинхронным выполнением кода на имеющихся серверах.
Либо вы используете что-то на EventMachine, либо колдуете с Ruby::Concurrent, Celluloid.
В любом случае, это работает не сильно эффективно из-за GIL (ждем, надеемся и верим в Ruby 3).
Но есть реализации свободные от этой проблемы, одна из них поверх JVM — JRuby, где теже самые библиотеки будут чувствовать себя гораздо комфортней.
Много расписывать не буду, думаю все как минимум слышали про него.
Главной особенностью данной реализации является легкая интеграция с любой библиотекой на JVM.
Это открывает большой простор в выборе библиотек и готовых инструментов.
Управляем автоматом на Groovy-Java. Как ЧПУ станку в домашней мастерской не превратиться в мульт героев «двое из ларца»
2016-11-08 в 10:08, admin, рубрики: apache camel, beagleboard black, blendercam, CAD/CAM, freecad, g-code, gcodetools, grape, groovy, hawtio, heekscad, inkscape, java, LinuxCNC, machinekit, open source, Raspberry Pi, ПрограммированиеПоговорим на темы от труда и работы, станков, автоматизации на java/groovy до прогнозов о будущем человечества.
Узнаете про персональное автоматизированное производство в домашней мастерской, как идея творца превращается в готовое изделие. Рассмотрим подход по отправке G-code инструкций из JVM и groovy/java на исполнение ЧПУ станку для автоматизации того, чего нет в системе «из коробки».

Надеюсь, эта публикация будет познавательна программистам работающих с JVM, тем кто интересуется темой IoT, кому не чуждо мастерить, кто думает о покупке 3D принтера, кто делал прототип какой-либо системы и запускал ПО на Raspberry PI/Beagleboard Black. То про что расскажу, можно повторить используя open source software и open hardware.
Читать полностью »
Сложности нагрузочного тестирования – интервью с Владимиром Ситниковым (Netcracker) и Андреем Дмитриевым
2016-11-03 в 8:45, admin, рубрики: heisenbug, java, Блог компании JUG.ru Group, нагрузочное тестирование, натуральное тестирование, синтетическое тестирование, тестирование, Тестирование IT-систем, тесты
В преддверии конференции Heisenbug мы поговорили о тонкостях нагрузочного тестирования с Владимиром vladimirsitnikov Ситниковым (уже 10 лет работает над производительностью и масштабируемостью Netсracker OSS — ПО, используемого операторами связи для автоматизации процессов управления сетью и сетевым оборудованием, увлекается вопросами производительности Java и Oracle Database) и Андреем real_ales Дмитриевым (java-программист, разрабатывал JDK в компании Sun и Oracle, руководил командой разработки под Android в QuickOffice. В компании Netcracker создавал и затем руководил подразделением, занимающимся нагрузочным тестированием OSS-платформы (Java, OracleDB, JMeter, etc.)).
JUG.ru: Расскажите, пожалуйста, о своей работе и той роли, которую играет в ней нагрузочное тестирование.
Читать полностью »
Какое место занимает язык Scala в ИТ-индустрии
2016-11-02 в 16:53, admin, рубрики: java, scala, объектно-ориентированное по, ооп, перспективы, разработка по, функциональное программирование
Язык программирования Scala является «симбиозом» Java и C#. Это не первый язык, комбинирующий ООП с функциональным подходом, но он начал набирать обороты в тот момент, когда развитие Java замедлилось. Более того, создатели Scala решили, что язык должен работать на виртуальной машине JVM и предоставлять доступ к Java-библиотекам.
Мартин Одерски начал разрабатывать Scala в начале 2000-х в стенах Лаборатории методов программирования EPFL. Он же ранее занимался разработкой Generic Java и компилятора Java фирмы Sun. Читать полностью »
Композиция и интерфейсы
2016-11-02 в 10:52, admin, рубрики: .net, C#, extension methods, java, интерфейсы, композиция, методы расширения, наследование, ооп, Проектирование и рефакторингВ мире объектно-ориентированного программирования уже достаточно давно подвергается критике концепция наследования.
Аргументов достаточно много:
- дочерний класс наследует все данные и поведение родительского, что нужно не всегда (а при доработке родительского в дочерний класс вообще попадают данные и поведение, которые не предполагались на момент разработки дочернего);
- виртуальные методы менее производительные, а в случае, если язык позволяет объявить невиртуальный метод, то как быть, если в наследнике нужно его перекрыть (можно пометить метод словом new, но при этом не будет работать полиморфизм, и использование такого объекта может привести к не ожидаемому поведению, в зависимости от того, к какому типу приведен объект в момент его использования);
- если возникает необходимость множественного наследования, то в большинстве языков оно отсутствует, а там, где есть (C++), считается трудоемким;
- есть задачи, где наследование как таковое не может помочь — если нужен контейнер элементов (множество, массив, список) с единым поведением для элементов разных типов, и при этом нужно обеспечить статическую типизацию, то здесь помогут обобщения (generics).
- и т.д., и т.п.
Альтернативой наследованию являются использование интерфейсов и композиция. (Интерфейсы давно используется в качестве альтернативы множественному наследованию, даже если в иерархии классов активно используется наследование.)
Декларируемым преимуществом наследование является отсутствие дублирования кода. В предметной области могут встречаться объекты с похожим или одинаковым набором свойств и методов, но имеющих частично или полностью разные поведение или механизмы реализации этого поведения. И в этом случае для устранения дублирование кода придется использовать иные механизмы.
А как можно решить эту задачу (отсутствие дублирования кода) в случае композиции и интерфейсов?
Этой теме и посвящена настоящая статья.
Читать полностью »
TailSampler — паралельная отправка GET-запросов в Apache.JMeter
2016-11-01 в 22:21, admin, рубрики: java, jmeter, высокая производительность, плагин, Тестирование веб-сервисов
1. Назначение плагина «HTTP Request Tail»
Плагин упрощает загрузку встроенных ресурсов, позволяет параллельно выполнять указанные GET-запросы. Делая тест максимально близким к работе браузера по составу загружаемых ресурсов и по способу загрузки этих ресурсов.
TailSampler выручает если нужно:
- выполнить группу GET-запросов паралельно;
- выполнить 1000 GET-запросов, не создавая 1000 компонентов HTTP Request;
- протестировать сайт, активно использующий AJAX, Adobe Flash, Adobe AIR, SilverLigth, ...
Лекции Технотрека. 1 семестр. Разработка на Java (весна 2016)
2016-11-01 в 11:44, admin, рубрики: java, mail.ru, Блог компании Mail.Ru Group, лекции, Программирование, разработка, технотрекПродолжаем публикацию наших свежих образовательных курсов. За 14 лекций Технотрека вы получите необходимые навыки и опыт в области разработки на Java, узнаете синтаксис и основные библиотеки языка, начнете понимать объектно-ориентированный подход, сможете декомпозировать сложные задачи.
Курс ведут Рустам Кильдиев, Java/Scala-разработчик мобильного ПО, и Дмитрий Архангельский, инженер-разработчик в Одноклассниках.
Лекция 1. «Знакомство с платформой Java»
Вводное занятие, на котором кратко дается описание всего курса. Основная задача курса — не просто научить синтаксису, а дать практические навыки и понимание основ. Курс выстроен так, чтобы, выполняя небольшие задачи, написать проект «Бэкенд к мессенджеру».Читать полностью »
