Я занимаюсь разработкой веб-приложений в течение последних 3 лет на PHP. Я сейчас на пороге, чтобы дать Java идти. Мое последнее использование языка было почти 8 лет назад и в основном было академическим.
Я достаточно хорошо знаком с объектной моделью PHP (версия 5), и я почти исключительно кодировал в OO. Теперь я хотел бы передать этот опыт и использовать его для разработки на Java.
Откуда я родом:
То, что я получил до сих пор о переходе на Java:
Теперь мне нужно понять, что могло бы сделать этот переход более плавным. Но из-за того, как люди говорят об этом, Java кажется совершенно новым зверем со своей собственной экосистемой. Кажется, что переход на Ruby или Python на самом деле будет проще, что любопытно, поскольку, когда я смотрю на это, Java концептуально кажется наиболее близким к PHP, хотя и более строгим и прекомпилированным.
Как ни странно, как это может звучать, мало кто публично задокументировал свой опыт таких шагов. Я искал google, amazon и stackoverflow для подобных вопросов, и результаты оставляют желать. Я просто не могу поверить, что мне нужно будет начинать то же самое, что и новичок, если бы я хотел быть продуктивным как веб-разработчик в Java быстро.
Кто-то может ответить, но я думаю, что люди, имеющие ценный опыт на обоих языках, больше всего обогатят эту дискуссию.
Я бы не стал изучать IDE одновременно с изучением языка. Более простой переход состоял бы в том, чтобы придерживаться вашей оболочки и обычного текстового редактора и использовать следующие инструменты, дружественные к оболочке:
javap
из командной строки даст подписи метода для любого класса в стандартной библиотеке. Подобно php -r
но дает больше информации, так как набирается Java. Онлайн-документация для Java является точной, профессиональной и последовательной в тон и формат. В отличие от PHP, где все функции находятся в одном плоском пространстве имен, стандартными библиотеками в Java являются иерархии классов. Вы должны знать свой путь вокруг этой стандартной библиотеки, что означает знание иерархий + обязанностей : например, вы должны знать, что java.util.List
– это субинтерфейс java.util.Collection
с добавлением концепции упорядоченные записи. С этой информацией в вашей голове поиск Google java.util.List приведет вас к Javadoc для класса, а Javadoc сообщит вам точные сигнатуры методов и свяжет вас с выбором конкретных реализаций.
Некоторые разные отличия:
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. Еще больше экономии времени – убедитесь, что вы провели тщательный поиск библиотек, которые препятствуют «переосмыслению колеса».
Удачи!