Полочка 'Java'

PHP и Java

13.06.2016 23:56

Я лет с 19-20 пишу на PHP, урывками на Java и последние пару лет — в основном на Java, на работе.

PHP мне ближе, но Java на порядок сложнее — и правильнее. Их сложно сравнивать; это разные, по сути, языки, со своими экосистемами.

Недавно на работе начал новый проект на PHP и через несколько дней понял следующее:
1) Я больше не хочу писать на PHP. Наверное, перерос. Да и отвык за последние пару лет, когда стал уже, по сути, мыслить на Java
2) В PHP больше свободы, но с другой стороны — проще “выстрелить себе в ногу”. То, что в Java не то, что не скомпилируется — не пройдет валидацию в IDE, в PHP — пройдет на “ура”.
3) “Мир” Java выглядит крупнее. Библиотек просто огромное количество, подключай — не хочу.
4) Java требует больше времени на разработку, но в итоге это окупается стабильностью. Когда код покрыт тестами (как юнит-, так и интеграционными), спишь спокойно.
Да, я в курсе насчет PHPUnit. После Junit, Mockito и Powermock, PHPUnit выглядит слабее. Возможно, есть PHP-аналоги работы с моками и spy, пока не изучал.
5) PHP-фрэймворки после Spring выглядят слабо. Composer после Maven и Gradle тоже.
6) Intellij IDEA — это самая крутая IDE, не только для Java. Как считал в 2007 году, так считаю и сейчас.

Это не пост-агитация, это чисто мое мнение.

Да, Костя, тебе отдельное спасибо за Java и в целом.


Java-сертификация: сертификат

16.09.2014 20:12

Через день-другой Oracle присылает письмо, где говорит:

Dear …

Congratulations on earning your Oracle Certification credential!

To provide you with immediate access to your certification credential, you can now download the eCertificate from your account at certView.oracle.com. Certification History from the Certification Status tab.

Upon request, a hard copy of your certificate will be sent via standard shipping to your personal or business address. Oracle does not ship certificates to 3rd party training or testing centers.

То есть можно получить сам сертификат по обычной почте. Заказал на дом. В течение 8 недель прилетит.

При переходе на сайт можно скачать разные логотипы, потешить себя, любимого, таким вот PDF:

Но! Что характерно. Нигде нет открытого линка, подтверждающего прохождение экзамена. Только личный, после логина. Написал в саппорт, жду ответ.

Update: сказали, что линка нет.


Java-сертификация: прохождение экзамена

15.09.2014 22:58

Итак, сегодня утром я сдал экзамен Oracle Java SE 7 Programmer I (1Z0-803), он же Oracle Java Associate.
Это первый экзамен в иерархии (см. ниже) и является обязательным, т.е без него другие сдать на дадут, хотя раньше было можно. Многие сдают потом 2-й и на этом останавливаются.

Oracle сотрудничает с международным центром Pearson Vue, который, в свою очередь, сотрудничает с центрами на местах.
На Кипре в плане Java таких три, два в Никосии, один в Лимассоле (как выяснилось, народ сдает в Никосии и про местный не все в курсе — подозреваю, что появился он недавно). Находится центр немного в жопе, искал около часа. Но нашел.

Стоимость экзамена: ~250 евро.

Приходить по правилам надо минут за 15 до начала, чтобы сделали фотку, скан удостоверяющего документа с подписью (загранник не подошел, но подошел российский паспорт), можно было сдать все личные вещи и получить взамен специальный лист бумаги и специальную ручку. Это всё описано в policy, если почитать заранее. Взял с собой по случаю купленные наушники, чтобы не слушать окружающих, но 5 молодых киприотов сидели тихо и не мешали (они сдавали какой-то местный экзамен по праву тоже через Pearson Vue, закончили раньше меня).

По поводу самого экзамена. Готовился я к нему больше месяца, брал двухнедельный отпуск, штудировал тесты. Прошел порядка 700 или 800 тестов. Первое время, конечно, самооценка упала, но ближе к экзамену проходил их уже на “ура”. Лично у меня основные трудности были с запоминанием:

  • кастинг вверх и вниз классов с полиморфизмом, особенно в извращенных формах
  • наебки вида if (b2 = b1 == false), которые местами попадались
  • рутинный пересчет значений в циклах — просто отнимает время
  • запоминание дерева checked & unchecked exceptions, особенно когда выбрасывается специфичный exception, где надо понять, надо ли его объявлять во throws, и какой catch его поймает (если есть) — наиболее низкоуровневый

Всё это было на экзамене (и ряд других мелочей вида private static int main(…)), но когда в голове уже практически компилятор, они тоже решаются довольно быстро.
В сети есть пара дампов с вопросами (правда, криво скопированные и потому плохие, т.к. при анализе важна каждая запятая), некоторые из подобных вопросов были на самом экзамене.

В целом, чтобы сдать, надо знать сам язык, String, StringBuilder (и их API, включая типы параметров), ArrayList, exceptions (checked & unchecked), понимать ООП в общем виде.

70 вопросов, набрать надо 63% (44 верных). Множественные ответы местами (3 из 5, например). Два часа на всё про всё. Можно возвращаться назад и пересматривать ответы. У меня как раз осталось полчаса свободных, пробежался, ошибок не нашел.

Что еще важно — смотреть, если ли в вариантах пункт “Compilation fails” или подобный (”Other result”) — если нет, то можно резко сократить время, не анализируя код на компилируемость, а сразу считать результат его работы.

В самом центре итог и result score не сказали — Oracle сразу уведомил на экране, что результат будет мылом в течение получаса.
Ехал на работу, размышлял, сколько угадал. Когда приехал, проверил почту — 75% (52 верных). Зело обрадовался, начал делиться с окружающими.

В течение пары дней Oracle должен дать линк, подтверждающий прохождение экзамена. Сейчас результат виден, только если залогиниться на их спец. сайте.

Ок, что самое главное для сдачи экзамена?
1. Купить (или найти нахаляву) тесты Enthuware. Они на 10-20% сложнее самого экзамена, но прокачивают они конкретно. Сильно конкретно. Без них результат будет процентов на 20-30 ниже, полагаю. И эти тесты не являются методикой для изучения, их надо проходить после того, как проштудированы книги по самому языку.
2. Иметь в голове компилятор, который за 1-1.5 минуты, глядя на любой Java-код, может сказать:
2.1 скомпилируется ли он
2.2 будет ли результат или вылетит exception
2.3 если будет результат — какой конкретно, учитывая инициализацию, статику, конструкторы (весь flow, включая повторное создание instances), exception, циклы и прочие конструкции
3. Взять пару свободных дней перед экзаменом для конкретного штудирования материала — я выбрал понедельник, когда регистрировался на сайте Pearson Vue
4. Лечь спать в 21:00 — чтобы тупить из-за незнания, а не из-за того, что голова с утра болит
5. Выкинуть месяц жизни при неторопливом сценарии или 2 недели при ускоренном
6. Don’t panic.

Сам я ожидал, что сдам на 80-85% (были такие ощущения). Ну ок, 75% тоже неплохо. Кстати, в определенный исторический момент Oracle снизил для этого экзамена порог с 90 до 70 вопросов и с 77% до 63% проходной.

Наиболее частный вопрос, который мне сегодня задавали: зачем мне это надо. По ряду причин. Сейчас чувствую, что в первую очередь для прокачки мозгов — узнал много вариантов “bad practice” и в моем конкретном случае это одна из ступеней плана личностного роста.
До Нового года будут еще 2 вехи, которые надо будет пройти, не связанные уже с экзаменами.

Для того, чтобы пройти следующий экзамен (1Z0-804, Java SE 7 Programmer II) возьму паузу в 3-6 месяцев. С наскоку его не сдать. Да и жаль очередной месяц жизни.


Java-сертификация: подготовка

27.08.2014 23:44

Несколько дней (пока в отпуске) готовлюсь к java-сертификации, к первому экзамену: Java SE7 Associate (1Z0-803). Экзамен на знание языка java и всех его тонкостей. Сдавать планирую в сентябре.

Прошел с моими остаточными знаниями в течение дня тестовый курс, 90 вопросов. Ответил верно на 55 (61%). Для сдачи экзамена надо ответить на 63% минимум. Буду в течение пары недель проходить по ошибкам, повторять. Уже понял, в каких областях мало практиковался.

Тесты в целом вида “думай, как компилятор, буква в букву и угадай, почему этот код плохой”.

Пример теста:

Consider the following classes:

interface I {
}

class A implemenents I {
}

class B extends A {
}

class C extends B {
}

And the following declarations:

A a = new A();
B b = new B();

Identify options that will compile and run without error.
Select 1 option:

A. a = (B)(I)b;
B. b = (B)(I) a;
C. a = (I) b;
D. I i = (C) a;

Ответ (выделить мышкой):


Correct Option is : A

A. a = (B)(I)b;

class B does implement I because it extends A, which implements I. A reference of type I can be cast to any class at compile time. Since B is-a A, it can be assigned to a.


Андроид

23.03.2011 11:37

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

Сильно порадовало (если не сказать — удивило) то, что Inttellij Idea стала оупен-сорсной. Помнится, ранее она стоила порядка 500 баксов.

update: на выходных почти осилил 350-страничный PDF-мануал по Андроиду от Гугла, скомплированный умельцами из их онлайн-документации. Красиво спроектировано, сказать нечего. Вроде все продумано. Особенно понравилась иерархия ресурсов приложения с автоматическим созданием экземпляров класса R.*, встроенная поддержка 2D и 3D-графики (OpenGL) и классы для работы с аудио и видео. Копаю дальше.


мелкомягкий тренинг: день последний

11.10.2007 19:01

Он же третий.

Сегодня я:

  • восполнил пробелы в навыках мышекликательного программирования
  • смирился с кривостью Аксапты
  • устал от всего этого (вначале было более или менее интересно — новая платформа, новый Java-like-ООП-язык, потом — не очень)
  • неожиданно получил прикольный такой сертификат в рамочке от обучающей компании с текстом “Кашуков Андрей Сергеевич успешно прослушал курс ‘Разработка — уровень 1 в Microsoft Dynamics AX’” за подписью руководителя тренинг-центра

То есть боролись не зря.
Завтра — новый рабочий день.


мелкомягкий тренинг: день второй

10.10.2007 19:16

Экватор.
Сегодня был 2-й день изучения Аксапты.
От изучения языка перешли к изучению системных объектов и среды разработки MorphX в целом.
Дальше, глубже, детальнее.
По ощущениям: с каждым разом система нравится мне все меньше и меньше.

Читать дальше »


начало недели: мелкомягкий тренинг

08.10.2007 21:05

Был сегодня на первом дне обучения по небезызвестному продукту мелкомягких Axapta (ныне именуемая Microsoft Dynamics AX).
Обучение шло с отрывом от производства (полный рабочий день) и проводило его (и будет еще проводить дня 2 минимум) компания Columbus.
Занесло меня туда от моей текущей работы, ибо скоро эти знания будут востребованы.
Занесло — потому как ранее я майкрософтовским софтом серьезно не занимался (делфи и фокспро там всякие — не в счет), ибо всю сознательную жизнь радел за юниксы (FreeBSD, если быть точным).

Читать дальше »


рабочее

04.10.2007 9:42

Оставил вчера на работе выполняться проверку входящих данных в проекте (на разные ошибки).
Пришел — оказалось, что она длилась 8 часов.
Офигел, стал изучать ситуацию.
Когда разобрался, проверка стала длиться 15 секунд.
Оптимизация — великая сила.


Java-подкасты

15.09.2007 0:34

Решил, что с дальнейшим изучением джавы и английского надо что-то делать.
В отношении английского не хватает разговорной речи.
Решил совместить приятное с полезным и стал искать забугорные подкасты о джава-технологиях.
Причем уверенность, что таковые есть, была.
И, как показала практика, для этого были все основания.
В итоге остановился на интересном проекте Java Posse (тут Google опять не подвел и вывел его первым же линком).
Сайт существует примерно 2 года и сейчас там представлено 140 с лишним подкастов.
Каждый из которых длится около часа.
Иными словами, я нашел новое применение своему телефону и мини-гарнитуре в метро.

P.S. Вот тут можно почитать о том, чьи голоса там слышны. Перечень компаний впечатляет.