• Руководство по возможностям Java версий 8-14

    • Translation

    Здесь есть все, что вам нужно знать о различных версиях и функциях Java.



    Java 8, Java 11, Java 13, Java 14 — какая разница?


    Вы можете использовать это руководство, чтобы получить практическую информацию о том, как найти и установить последнюю версию Java, понять различия между дистрибутивами Java (AdoptOpenJdk, OpenJDK, OracleJDK и т.д.), А также получить обзор возможностей языка Java, включая версии Java 8-14.


    Примечание переводчика
    17 февраля был опубликован перевод Руководство по версиям и возможностям Java
    В комментарии к нему Julegg написал
    Там у Марко уже описание java-14 добавилось. Будет ли тут перевод добавлен?

    Вашему вниманию предлагается обновленная версия руководства от 09 апреля 2020 г.
    Читать дальше →
  • Java-модель памяти (часть 1)

    Привет, Хабр! Представляю вашему вниманию перевод первой части статьи «Java Memory Model» автора Jakob Jenkov.

    Прохожу обучение по Java и понадобилось изучить статью Java Memory Model. Перевёл её для лучшего понимания, ну а чтоб добро не пропадало решил поделиться с сообществом. Думаю, для новичков будет полезно, и если кому-то понравится, то переведу остальное.

    Первоначальная Java-модель памяти была не очень хорошая, поэтому она была пересмотрена в Java 1.5. Эта версия все ещё используется сегодня (Java 14+).
    Читать дальше →
    • +10
    • 9.4k
    • 7
  • Что такое Windows PowerShell и с чем его едят? Часть 5: Доступ к внешним объектам



      В операционных системах Windows поддерживаются различные объектные инфраструктуры. Для доступа к ним можно использовать интерфейсы прикладного программирования (API), но разработка полноценных приложений не всегда оправдана. В PowerShell существуют специальные командлеты, позволяющие обращаться к объектам .NET, COM, WMI (CIM) и ADSI в интерактивном режиме. В четвертой части цикла мы изучили основы с упором на классы .NET Core, а сейчас хотим углубить тему и разобрать особенности взаимодействия PowerShell с внешними объектами.
      Читать дальше →
    • Сравнительный анализ некоторых Java-декомпиляторов


        В этой статье будут рассмотрены четыре декомпилятора — Fernflower, CFR, Procyon и jadx — и произведено их сравнение по нескольким параметрам.


        Дисклеймер: сравнение неформальное и не претендует на научность. Скорее, это просто обзор всех актуальных (на осень 2019) декомпиляторов Java-байткода.


        Автор — Анна Явейн (brontozyablik), разработчица Solar appScreener

        Читать дальше →
      • Что такое Windows PowerShell и с чем его едят? Часть 1: основные возможности

          Исторически утилиты командной строки в Unix-системах развиты лучше чем в Windows, однако с появлением нового решения ситуация изменилась.

          Windows PowerShell позволяет системным администраторам автоматизировать большинство рутинных задач. С ее помощью можно менять настройки, останавливать и запускать сервисы, а также производить обслуживание большинства установленных приложений. Воспринимать синее окошко как еще один интерпретатор команд было бы неправильно. Такой подход не отражает сути предложенных корпорацией Microsoft инноваций. На самом деле возможности Windows PowerShell гораздо шире: в небольшом цикле статей мы попробуем разобраться, чем решение Microsoft отличается от более привычных нам средств.


          Читать дальше →
        • API, ради которых наконец-то стоит обновиться с Java 8. Часть 2

            Продолжаем рассказ про API, которые появились в новых версиях Java.



            1. Files.mismatch()


            Появился в: Java 12


            На практике довольно часто возникает необходимость проверить, являются ли два файла в точности одинаковыми или нет. С помощью метода Files.mismatch(), появившегося в Java 12, это наконец-то можно сделать. Этот метод возвращает позицию первого несовпадающего байта в двух файлах или -1, если файлы идентичны.


            Это может быть полезно, например, когда синхронизируешь содержимое двух директорий. Чтобы не перезаписывать файл при копировании тем же самым содержимым и лишний раз не нагружать диск, можно сначала проверить, идентичны файлы или нет:


            public static void syncDirs(Path srcDir, Path dstDir)
                    throws IOException {
                // Для простоты демонстрации считаем, что поддиректорий нет
                try (Stream<Path> stream = Files.list(srcDir)) {
                    for (Path src : stream.collect(toList())) {
                        Path dst = dstDir.resolve(src.getFileName());
                        if (!Files.exists(dst)) {
                            System.out.println("Copying file " + dst);
                            Files.copy(src, dst);
                        } else if (Files.mismatch(src, dst) >= 0) {
                            System.out.println("Overwriting file " + dst);
                            Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);
                        }
                    }
                }
            }
            Читать дальше →
          • API, ради которых наконец-то стоит обновиться с Java 8. Часть 1

              На сегодняшний день Java 8 является самой популярной версией Java и ещё довольно долго будет ей оставаться. Однако с тех пор уже выпущено пять новых версий Java (9, 10, 11, 12, 13), и совсем скоро выйдет ещё одна, Java 14. В этих новых версиях появилось гигантское количество новых возможностей. Например, если считать в JEP'ах, то в сумме их было реализовано 141:



              Однако в этом цикле статей не будет никакого сухого перечисления JEP'ов. Вместо этого я хочу просто рассказать об интересных API, которые появились в новых версиях. Каждая статья будет содержать по 10 API. В выборе и порядке этих API не будет какой-то определённой логики и закономерности. Это будет просто 10 случайных API, не ТОП 10 и без сортировки от наиболее важного API к наименее важному. Давайте начнём.

              Читать дальше →
            • Шпаргалка Java программиста 1: JPA и Hibernate в вопросах и ответах

              • Tutorial
              image

              Знаете ли вы JPA? А Hibernate? А если проверить?

              В чем смысл серии статей 'Шпаргалки Java программиста'
              За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.




              Данная статья будет полезна и для тех кто только собирается изучать JPA и Hibernate (В этом случае рекомендую сразу открывать ответы), и для тех кто уже хорошо знает JPA и Hibernate (В этом случае статья позволит проверить свои знания и освежить особенности технологий). Особенно статья будет полезна тем кто собирается пройти техническое интервью, где возможно будут задавать вопросы по JPA и Hibernate (или сам собирается провести техническое интервью).

              Поехали...
            • Как делать меньше ошибок в английском. Поясняет носитель языка

              • Tutorial


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

              На начальном этапе это помогает разобраться в фонетике, но потом приходится свыкаться с большим количеством правил и исключений, которые не имеют аналогов в русском.
              Мы попросили одного из самых опытных носителей английского языка в нашей школе, Трессу, рассказать о наиболее частых ошибках ее русскоязычных студентов и как их исправить. Но прежде чем перейти к самому списку, есть ряд советов от нее, чтобы количество ошибок постоянно уменьшалось:
              Читать дальше →
            • Учим Arduino печатать телеграммы

              • Tutorial

              Небольшой проект на Arduino, который печатает приходящие вам на телефон уведомления: сообщения из разнообразных мессенджеров, новости из Твиттера и всё остальное. Такой «телеграфный аппарат» задумывался как интересная игрушка без серьёзного применения, но, как оказалось, получать сообщения в виде бумажных телеграмм крайне приятно. Под катом — описание работы аппарата и подробный туториал.
              Читать дальше →
            • Цифровой бармен. Arduino проект для совершеннолетних начинающих электронщиков. Часть 1

              • Tutorial
              У меня много друзей. Молодые парни, мужчины средних лет и конечно дамы всех возрастов. Наверное всех. Трудно определить возраст современной женщины. Да и не очень хочется.
              Так вот. Детей моих друзей и знакомых в силу своих возможностей я увлекаю электроникой. Строим маленьких роботов, жучков светлячков всяких и даже световые мечи. У детей почти всегда всё получается и они, конечно, бегут хвастаться ожившей электроникой родителям. И так раз за разом. Но однажды одна из моих знакомых, глядя на очередной всплеск гордости у своей дочери, говорит – я тоже хочу вникнуть в эту электронику, и программирование, и может даже что-то спаять. Не вопрос. Давай покажу, как собрать робота на колесной платформе. Будет ездить по полоске на полу. Или игру сделаем, питона например, или просто поморгаем светодиодами, или … Перебрали множество примеров. Получается если для начинающих, то всё какое-то детское, а если не детское, то совсем уже не для начинающих. Что-то не так! Нужны уроки для НАЧИНАЮЩИХ, ВЗРОСЛЫХ электронщиков. Пусть это будет – цифровой бармен или машина для смешивания коктейлей.
              Читать дальше →
            • Bash-скрипты: начало

              • Translation
              Bash-скрипты: начало
              Bash-скрипты, часть 2: циклы
              Bash-скрипты, часть 3: параметры и ключи командной строки
              Bash-скрипты, часть 4: ввод и вывод
              Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
              Bash-скрипты, часть 6: функции и разработка библиотек
              Bash-скрипты, часть 7: sed и обработка текстов
              Bash-скрипты, часть 8: язык обработки данных awk
              Bash-скрипты, часть 9: регулярные выражения
              Bash-скрипты, часть 10: практические примеры
              Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

              Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


              Читать дальше →
            • Графический стек Linux

                (оригинал — Jasper St. Pierre, разработчик GNOME Shell, взято отсюда)

                Это обзорная статья о составных частях графического стека Linux и том, как они уживаются вместе. Изначально я написал её для себя после разговоров об этом стеке с Оуэном Тейлором, Рэем Строудом и Эдэмом Джексоном (Owen Taylor — мэйнтейнер Gnome Shell; Ray Strode — мэйнтейнер большого количества десктопных пакетов сообщества RedHat; Adam Jackson — разработчик графического стека Gnome Shell и интеграции с XOrg; прим. переводчика)

                Я постоянно дёргал их, снова и снова расспрашивал о всяких мелочах, а потом эти мелочи благополучно забывал. В конце концов, я задал им вопрос — а нет ли какого-нибудь обзорного документа, уткнувшись в который я бы избавил ребят от своего назойливого внимания? Не получив утвердительного ответа я решил написать эту статью, которая по завершению была вычитана Эдэмом Джексоном и Дэвидом Эйрли. Они оба работают над этим стеком.
                Читать дальше →
              • Консоль в массы. Переход на светлую сторону. Bash

                • Tutorial
                keep-calm-and-bin-bash

                Вступление


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

                Мы добрались до самой интересной и увлекательной темы — это скрипты на bash. Когда вы запускаете терминал, внутри него работает специальная программа-оболочка — shell (англ) — интерпретатор команд. Shell понимает все команды, которые вы вводите с клавиатуры, и обрабатывает их. Также выводит сообщения об ошибках, следит за корректностью команд и их синтаксисом. Примером таких команд могут быть: сменить директорию, создать новую директорию, добавить текстовый файл, отредактировать текстовый файл, сохранить изменения и другие.
                Читать дальше →
              • Книга «Изучаем Arduino. 65 проектов своими руками»

                  image Приходилось ли вам, разглядывая какое-нибудь устройство, задумываться над тем, как оно работает в действительности? Возможно, это был катер с дистанционным управлением, лифт, автомат по продаже напитков или электронная игрушка? А может быть, вам хотелось самому создать робота, придумать электронное управление для модели железной дороги? Или у вас вдруг возникало желание организовать получение и анализ долгосрочного прогноза погоды? Как и с чего вы могли бы начать собственный проект?

                  Плата Arduino поможет на практике раскрыть некоторые секреты электроники. Cозданная Массимо Банци и Дэвидом Куартиллье, система Arduino предлагает бюджетный способ создания интерактивных проектов и объектов, таких как дистанционно управляемые роботы, системы записи пройденного маршрута на основе GPS и электронные игры.

                  В этой книге обзор 65 проектов. Пример одного проекта под катом.
                  Читать дальше →
                  • +11
                  • 24.4k
                  • 6
                • Космонавты, которые намного круче чем любой герой боевика

                  • Translation
                  От переводчика: В последнее время на первый план выходит техническая часть космических программ. В сети можно найти большое количество статей, рассказывающих о тех или иных научных достижениях, помогающих нам в освоении космоса. Но не стоит забывать и про космонавтов, отважно бросающих вызов звездам. В этой статье автор рассказывает о пяти случаях, которые заставляют как никогда проникнуться уважением к этим покорителям космоса.

                  Читать дальше →
                • Очень быстрый и эффективный способ расслабления глаз

                    Предисловие


                    imageНе знаю, все ли программисты всесторонне любознательные люди, но я всегда пытаюсь получить фундаментальные знания во всех областях, которые могут быть практически полезны. В то время, когда мне в голову пришла эта идея я изучал анатомию и физиологию по журналам «Тело человека. Снаружи и внутри», ну а по работе я занимался стерео-варио фотографиями (для тех кто не знает — были такие советские календарики с ребристой поверхностью, где картинка либо казалась объемной, либо менялась). Так вот, в один из вечеров мне пришла в голову замечательная идея, которую я на протяжении уже 4х лет использую для поддержания своего зрения.
                    Обещаю, что эффект почувствуете сразу!
                    Читать дальше →
                  • Понимание ООП в JavaScript [Часть 1]

                    • Translation
                    • Tutorial
                    — Прототипное наследование — это прекрасно
                    JavaScript — это объектно-ориентированный (ОО) язык, уходящий корнями в язык Self, несмотря на то, что внешне он выглядит как Java. Это обстоятельство делает язык действительно мощным благодаря некоторым приятным особенностям.

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

                    К счастью, в ECMAScript 5 появилось множество вещей, которые позволили поставить язык на правильный путь (некоторые из них раскрыты в этой статье). Также будет рассказано о недостатках дизайна JavaScript и будет произведено небольшое сравнение с классической моделью прототипного ОО (включая его достоинства и недостатки).
                    Читать дальше →
                  • О чем не хочется вспоминать программисту

                          Как‐то,    читая  комментарии     к   очередной  вводной статье к oDesk,   я нарвался на
                      комментарий в котором присутствовало словосочетание «трэш‐работа». Комментарий был
                      о чем‐то другом, но зацепило именно это. Потому что именно  это  словосочетание кратко
                      и  емко описывает целый   пласт работы  во  фрилансе и в какой‐то мере  в ИТ, особенно в
                      тех его областях, где информационные технологии являются лишь сопутствующей частью
                      бизнес процесса.  Данный пост —  свободное по форме изложение моего   опыта  и опыта
                      моих знакомых: фрилансеров, программистов,   системных  администраторов, принимавших
                      участие в работе, к которой так и липнет емкая приставка трэш‐.

                          Данное  повествование    ведется     исключительно    с   позиции   наемного работника,
                      поэтому если вам, как заказчику, начальнику, менеджеру, покажется, что в  этом тексте
                      такие  персонажи      как      заказчики,  начальники, менеджеры  описываются однобоко и
                      предвзято, то это сделано намеренно, а не по глупости или упущению.
                      Читать дальше →
                    • 1000+ часов видео по Java на русском

                      • Tutorial
                      Добрый день.
                      Меня зовут Головач Иван, я руковожу небольшой образовательной компанией и преподаю сам:
                      1. Java Core
                      2. Junior Java Developer: Servlet API, JDBC, Maven, JUnit, Mockito, Log4J, основы Spring/SpringMVC, основы JPA/Hibernate, шаблоны/архитектуры MVC/IoC/DAO.
                      3. Multicore programming in Java.


                      Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

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

                      (GolovachCourses.com)


                      Здесь собраны несколько вариантов записи моего курса Java Core.
                      Модуль #1 (Procedural Java):
                      Набор июль 2013: #1, #2, #3, #4
                      Набор апрель 2013: #1, #2, #3, #4
                      Набор февраль 2013: #1, #2, #3, #4
                      Набор январь 2013: #1, #2, #3, #4
                      Набор октябрь 2012: #1, #2, #3, #4.
                      Читать дальше →
                      • +102
                      • 1179k
                      • 38