Подтвердить что ты не робот

От 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.
  • Как долго вы чувствовали, что переход завершен?
4b9b3361

Ответ 1

Я бы не стал изучать 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, файлы web.xml и т.д.) имеет смысл и делает что-то полезное. В небольшой компании, где программисты являются персоналом ОПС, Java намного больше работает. С помощью Java вам придется привыкнуть к таким концепциям, как запуск процесса Java, мониторинг процесса Java, чтобы он оставался, отслеживая процесс Java, чтобы убедиться, что он не попадает в кому, где он жив, но не реагировать, отключать и перезапускать Java-процесс с минимальным сбоем при обновлении кода и т.д. и т.д. Если у вас есть отдельный персональный персонал, это прекрасно, это их работа, они очень хороши в этом. Если вы программист, няня Java-процесс может отвлекать и трудно преуспеть.

Ответ 3

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

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

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

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

Ответ 4

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

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

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

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

Ответ 5

Это похоже на старую запись, но эй...

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

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

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

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

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

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

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

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

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

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

Пол

Ответ 6

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

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

Ответ 7

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

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

Удачи!