От PHP до Java. Любой совет?

Я занимаюсь разработкой веб-приложений в течение последних 3 лет на PHP. Я сейчас на пороге, чтобы дать Java идти. Мое последнее использование языка было почти 8 лет назад и в основном было академическим.

Я достаточно хорошо знаком с объектной моделью PHP (версия 5), и я почти исключительно кодировал в OO. Теперь я хотел бы передать этот опыт и использовать его для разработки на Java.

Откуда я родом:

  • Linux как настольный компьютер и сервер
  • Vim / gVim + плагины как редактор
  • MySql для db
  • apache httpd
  • опыт с кучей фреймворков PHP, Zend + Doctrine – это те, которые я использую больше всего

То, что я получил до сих пор о переходе на Java:

  • Мне нужна среда IDE: IntellijIDEA, NetBeans или Eclipse
  • Мне нужно выбрать структуру разработки. Некоторые повторяющиеся имена: Spring MVC, полосы, калитка.

Теперь мне нужно понять, что могло бы сделать этот переход более плавным. Но из-за того, как люди говорят об этом, Java кажется совершенно новым зверем со своей собственной экосистемой. Кажется, что переход на Ruby или Python на самом деле будет проще, что любопытно, поскольку, когда я смотрю на это, Java концептуально кажется наиболее близким к PHP, хотя и более строгим и прекомпилированным.

Как ни странно, как это может звучать, мало кто публично задокументировал свой опыт таких шагов. Я искал google, amazon и stackoverflow для подобных вопросов, и результаты оставляют желать. Я просто не могу поверить, что мне нужно будет начинать то же самое, что и новичок, если бы я хотел быть продуктивным как веб-разработчик в Java быстро.

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

  • Что помогло вам быстро перейти на Java?
  • Какие понятия являются вездесущими в Java и отсутствуют на PHP и наоборот?
  • Некоторые исправления для PHP-разработчиков, идущих на Java.
  • Как долго вы чувствовали, что переход завершен?

Я бы не стал изучать IDE одновременно с изучением языка. Более простой переход состоял бы в том, чтобы придерживаться вашей оболочки и обычного текстового редактора и использовать следующие инструменты, дружественные к оболочке:

  • ant, для организации вашего проекта, запуска автоматизированных наборов тестов, инкрементных компиляций
  • BeanShell для интерактивного тестирования
  • Быстрый трюк: javap из командной строки даст подписи метода для любого класса в стандартной библиотеке. Подобно php -r но дает больше информации, так как набирается Java.

Онлайн-документация для Java является точной, профессиональной и последовательной в тон и формат. В отличие от PHP, где все функции находятся в одном плоском пространстве имен, стандартными библиотеками в Java являются иерархии классов. Вы должны знать свой путь вокруг этой стандартной библиотеки, что означает знание иерархий + обязанностей : например, вы должны знать, что java.util.List – это субинтерфейс java.util.Collection с добавлением концепции упорядоченные записи. С этой информацией в вашей голове поиск Google java.util.List приведет вас к Javadoc для класса, а Javadoc сообщит вам точные сигнатуры методов и свяжет вас с выбором конкретных реализаций.

Некоторые разные отличия:

  • Строки – это последовательности символов, а не последовательности байтов. Абсолютно правильный способ сделать это.
  • Системы производят и потребляют потоки (байтов или символов), а не байтовые буферы. Например, если вы хотите отфильтровать вывод в PHP, стандартная практика заключается в том, чтобы задать ob_get_contents для байтового буфера, а затем преобразовать весь буфер. В Java вы добавляете фильтр в свой сервлет, который преобразует выходные данные байтом или символом за раз. Это немного внушительно, чтобы работать с первоначально, но это проще и более Lego-like, когда вы привыкаете к этому – ваш потоковый процессор не должен знать, откуда и откуда они идут.
  • Практически все полезное – это интерфейс, и создание экземпляра интерфейса может быть сложным, нестандартизированным и не всегда хорошо документированным. В PHP вы можете запускаться и работать с XML с помощью new DOMDocument() . В Java, org.w3c.dom.Document – это интерфейс, поэтому new () не будет работать. Javadoc очень точно говорит о том, как интерфейсные экземпляры ведут себя, как только они появляются, но при попытке выяснить, как на самом деле рождается объект, он может быть довольно сдержанным и ханжеским. Очень часто вам нужно искать учебники и примеры кода, а также скопировать-вставить кусок шаблона, который даст вам экземпляр DOMDocument или java.sql.Connection или что-то еще. Одной из основополагающих причин, подобных Spring, является то, что они выделяют уродливый код создания объектов и представляют вам мир, где реалии интерфейса просто волшебны.

Я фактически переключился в противоположном направлении. Я обнаружил, что Java работает очень хорошо в крупной компании, где вы можете работать с одним компонентом, передавая его кому-то другому, который интегрирует этот компонент в более крупную систему, которая затем упаковывается и передается отдельной операционной команде – это где все это косвенное и настраиваемое ( FactoryBuilderFactory типа FactoryBuilderFactory , файлы web.xml и т. д.) имеет смысл и делает что-то полезное. В небольшой компании, где программисты являются персоналом ОПС, Java намного больше работает. С Java вам придется привыкнуть к таким концепциям, как запуск процесса Java, мониторинг процесса Java, чтобы он оставался, отслеживая процесс Java, чтобы убедиться, что он не попадает в кому, где он жив, но не реагировать, выключать и перезапускать процесс Java с минимальными нарушениями при обновлении кода и т. д. и т. д. Если у вас есть отдельный персональный персонал, это нормально, это их работа, они очень хороши в этом. Если вы программист, няня Java-процесс может отвлекать и трудно преуспеть.

Начните с учебника по Java

http://java.sun.com/docs/books/tutorial/getStarted/index.html

Тогда идите покупать Head First Java

http://oreilly.com/catalog/9780596004651

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

Строго говоря, вам не нужна среда IDE для работы на Java. Я сильно кодировал Java на протяжении более десяти лет (и в основном на другие вещи более 25 лет), и мне не очень нравятся IDE. Возможно, этот скрытый показатель моего возраста является частью проблемы 🙂 Это компромисс, как и все остальное.

Я подключу Stripes в качестве простой простой структуры, но в основном это потому, что она относительно небольшая и ограничена по охвату. Большие рамки, такие как Spring, являются «кухонными раковинами», а изучение Java с помощью одной из этих структур может сгладить некоторые из трудных частей, но оставит другие основные аспекты таинственными. Опять же, это вопрос личных предпочтений.

Хорошо иметь кого-то, кто знает язык. О, и к этому моменту, сделайте друга документации API Java. Поскольку платформы идут, Java API имеет свои взлеты и падения, но по большей части документация, по крайней мере, довольно тщательная и довольно точная.

Вы также захотите ознакомиться с JSP и его отношением к архитектуре веб-сервисов Java и Java, потому что это будет то, что вы будете напрямую относиться к вашему PHP-опыту (я думаю).

Лучший шаг, который я сделал, – от Java до PHP.

Остерегайтесь сложности. Прежде всего, ключ к отличному программному обеспечению – это простота, и именно поэтому PHP в сочетании с хорошей картой убивает Java.

С Java вы рискуете стать подчиненным для своего контейнера сервлетов и фреймворка. Выберите простейшую наиболее гибкую структуру. Элементы управления и пользовательские теги – дьявол. Вы будете тратить дни, изучая вещи, которые были разработаны, чтобы сделать развитие более быстрым, но в конечном счете слишком сложным и негибким. Java замедлит разработку из-за сложности, компиляции и статических типов. Вы будете отклоняться от ненужных указателей.

Редактировать: Инструменты в стороне, Java и PHP – это очень похожие структуры языков языка «C». Гораздо больше, чем Python или Ruby. Это статическая типизация и сложные инструменты, которые делают Java настолько чужими.

Кажется, это немного старый пост, но эй …

Я перешел с C # на Java, и я только что начал роль и перехожу от Java к PHP …

Во-первых: Java потрясающе 🙂

  • для вашей IDE получите Eclipse, как только вы привыкнете к нему, вам никогда не придется покидать среду IDE (кроме битов SQL). Он отлично управляет проектами, вы можете загружать alsorts плагинов, таких как SVN-плагины. Он позволяет запускать сервер Tomcat в Eclipse и выводит ошибки прямо на консоль Eclipse.

  • для рамки я использовал Struts and Tiles и Torque для ORM, взял меня на некоторое время, чтобы окунуться в них, но как только мы подружились, я не могу представить себе другого способа развития. Хотя я предполагаю, что для небольшого проекта было бы много накладных расходов!

  • согласился с вышеупомянутой записью HEADFIRST JAVA, вот как я узнал, и я использовал ее для многих других языков, у них есть визуальный метод обучения, который намного проще, чем чистые учебники – ну для меня в любом случае. Я заработал и работал в течение дня и уверен, что через пару недель я думаю – но всегда учусь 🙂

  • yip Java строго, но вы полюбите его, потому что я перехожу к «PHP», это немного странно.

  • вам также нужно будет загрузить Tomcat для запуска ваших Java-бит, и это будет просто, чтобы работать.

  • Java организует все ваши классы очень красиво, ни один из этих «require_once (some_text_file.php)» мусора, просто «импортируйте myClass» и выходите.

  • одна из вещей, которая меня раздражает, заключается в том, что невозможно описать, какие библиотеки JAR вы НЕ используете, поэтому через пару лет, работая над сайтом, ваша папка с lib может немного запутаться – особенно, если мулитивные люди удаляют и добавление функциональности.

Я мог бы продолжить.

Павел

Я рекомендую использовать JavaBat здесь

Это даст вам несколько хороших идей. Мне потребовалось 1 год в профессиональном обучении, чтобы очень хорошо понять Java, и я смог легко перейти на другие языки OO, как только у меня возникли мысли, избитые мной.

Для моего случая я занимался только процедурной кодировкой на php, поэтому, прыгая на Java, я не только нашел все более подробным и менее прощающим, чем php (но теперь я знаю, почему так должно быть, и я любить Java много), но учась организовывать мой код в классах, а также изучать среду IDE для eclipse заняло около 1,5 лет просто возиться, пробная версия и ошибка, создавая материал самостоятельно (в основном, качающиеся приложения).

Я предполагаю, что просто создаю материал самостоятельно, используя огромное количество библиотек Java там, чтобы создавать свои собственные вещи, – это самый быстрый способ. Кроме того, я думаю, что я мог бы сэкономить больше времени, тщательно прочитав учебники по java sun. Еще больше экономии времени – убедитесь, что вы провели тщательный поиск библиотек, которые препятствуют «переосмыслению колеса».

Удачи!