PHP Java.

9 Cevap java

Ben PHP son 3 yıldır web uygulama geliştirme yapıyorum. Java bir gitmek vermek eşiğinde şimdi değilim. Dil benim son kullanımı yaklaşık 8 yıl önce oldu ve çoğunlukla akademik oldu.

Ben gayet iyi PHP'nin nesne modeli (sürüm 5) ile tanışmış ve ben neredeyse sadece OO kodlama edilmiştir. Ben şimdi bu deneyimi taşınması ve Java geliştirmek için kullanmak istiyorum.

Nereden geliyorum:

  • Bir masaüstü ve sunucu olarak linux
  • Bir editör olarak vim / gVim + Eklentiler
  • Db için MySql
  • apache httpd
  • PHP çerçeveler bir grup ile deneyim, Zend + Doktrin Ben en çok kullandığınız olanlar olmak

Java için bir hareket hakkında şimdiye kadar topladı oldum ne:

  • Ben bir IDE gerekir: IntellijIDEA, NetBeans veya Eclipse
  • Ben bir geliştirme çerçevesi almak gerekir. Bazı tekrarlayan isimler: Spring MVC, çizgili, wicket.

Şimdi bu geçiş daha sorunsuz hale yardımcı olabilecek bazı bilgiler gerekir. Ama insanlar bu konuda konuşmak yoldan, Java kendi ekosistemi ile tamamen yeni bir canavar gibi görünüyor. Ruby veya Python için hareket aslında ben baktığım zaman, Java kavramsal sıkı ve precompiled olsa, PHP yakın görünüyor beri meraklı olduğu, daha kolay olurdu sanki geliyor.

Bu gelebilir kadar tuhaf gibi, çok az insan alenen bu tür hamleler deneyimlerini belgeledi. Ben benzer sorular için Google, Amazon ve stackoverflow arandı ve sonuç arzu bırakın. Ben sadece hızlı Java bir web geliştirici olarak üretken olmak istedim eğer ben bir acemi olarak aynı başlamak gerekir ki inanamıyorum.

Herkes yanıt açığız, ama ben biraz her iki dilde de bazı değerli deneyime sahip insanlar bu tartışma en zenginleştirmek olacağını düşünüyorum.

  • Java hızlı gidiyor olsun ne oldu?
  • Ne kavramlar tersi Java her yerde ve PHP bulunmadığına ve?
  • Java gidiyor PHP geliştiricileri için bazı gotchas.
  • Eğer hissettim önce ne kadar süre geçiş tamamlandı?

9 Cevap

Ben bir dil öğrenme gibi aynı zamanda bir IDE öğrenmeye çalışın olmaz. Daha kolay bir geçiş kabuğundan ve alışılmış metin editörü sadık olmak ve aşağıdaki kabuk dostu araçları kullanmak olacaktır:

  • otomatik test suit, artışlı derler çalışan, proje düzenlemek için, karınca
  • Hızlı BeanShell interaktif test için, çalışırken işler dışarı
  • Hızlı bir hile: komut ile javap standart kitaplığındaki herhangi bir sınıf için bir yöntem imzaları verecektir. php -r benzer ama Java yazdığınız beri daha fazla bilgi verir.

Java için çevrimiçi belgeleri, hassas, profesyonel ve sesi ve biçimi tutarlı. Tüm fonksiyonları tek bir düz ad olan PHP aksine, Java standart kütüphaneler sınıf hiyerarşileri vardır. Sen hierarchies + responsibilities bilmek anlamına gelir ki, bu standart kütüphanede yolunuzu bilmek lazım: örneğin java.util.List {bir subinterface olduğunu bilmek lazım [(2)] } sipariş girişlerinin bir kavram ilavesi ile. Kafanıza bu bilgiler ile, java.util.List için bir google arama sınıfı için Javadoc götürecek ve Javadoc size kesin yöntem imzaları anlatmak ve somut uygulamaları bir seçim sizi bağlanacaktır.

Bazı çeşitli ayrımlar:

  • Dizeler yerine bayt dizileri daha characters dizileri vardır. Bunu yapmanın kesinlikle doğru yolu.
  • Sistemleri yerine bayt tamponlar daha (bayt veya karakter) streams üretmek ve tüketmek. Eğer PHP filtre çıkış istedim Örneğin, standart bir uygulama daha sonra bütün tampon dönüştürmek için bir bayt tampon için ob_get_contents istemektir. Java'da, size çıktı bir anda bir bayt veya karakter dönüşümleri senin servlet için bir filtre ekleyin. Başlangıçta çalışmak için heybetli biraz ama daha basit ve buna alışmak zaman daha Lego-gibi - sizin stream işlemci şeyler geliyor ve nereye gittiğini bilmek zorunda değildir.
  • Yararlıdır Hemen hemen her şey bir arayüz, ve bir arabirimin örneği oluşturarak, zor standart olmayan, ve her zaman iyi belgelenmiş değil olabilir. PHP, sen kalk ve new DOMDocument() ile XML ile çalışan. Java'da, org.w3c.dom.Document bir arayüz, çok yeni () çalışmaz. Javadoc varoluş haline gelmek kez arayüz örnekleri nasıl davrandığı konusunda çok hassas olduğunu, ancak bir nesnenin aslında doğar öğrenmek için çalışıyoruz oldukça çekingen ve taslayan olabilir. Çok sık, öğreticiler ve kod örnekleri için bakmak gerekir ve size DOMDocument veya java.sql.Connection ya da her neyse bir örneğini veren Demirbaş bir parça kopyalayıp yapıştırın. Bahar gibi çerçeveler popüler bir nedeni de çirkin nesne oluşturma kodunu ayrı ve arayüz uygulamaları sadece sihirli olduğu bir dünyada size sunuyoruz olmasıdır.

Aslında ters yönde açık. Adl - Java sonra paketlenir ve ayrı bir operasyon ekibi kapalı teslim edilir daha büyük bir sistemin, içine bileşeni bütünleştirir başkasına devrettiğini, tek bir bileşen üzerinde çalışıyor olabilir büyük bir şirkette çok iyi çalışıyor bulundu Bütün bu yönlendirme ve konfigürasyon (FactoryBuilderFactory, vb, web.xml dosyaları soyutlamalar yazın) mantıklı ve yararlı bir şey yok burada. Küçük bir şirket olarak nerede programcılar are ops personel, Java çok daha eseridir. Java ile, Java süreci başlamadan emin o kadar kalır yapmak için Java sürecinin izlenmesi, bu hayatta bir komaya gitmez emin olmak için Java sürecinin izlenmesi gibi ama kavramlara alışmak gerekecek ayrı ops personel varsa, onlar bunu çok iyi konum, bu onların işi, iyi, yanıt kapatılıyor ve kod güncelleme yaparken, vs, vs, en az bozulma ile Java sürecini yeniden başlatma değil. Eğer bir programcı iseniz, bir Java işlemi bebek bakımı iyi yapmak için rahatsız edici ve zor olabilir.

Java Eğitimi ile başlayın

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

Sonra Head First Java satın gitmek

http://oreilly.com/catalog/9780596004651

Bu, ne olursa olsun yapmak istediğiniz ne esastır dilde oldukça hızlı gidiyor alacak.

Açıkçası, sen need, bir IDE Java çalışmak gerekmez. Ben de bir on yıl boyunca Java ağır kodlama oldum (ve ağır diğer şeyler üzerinde 25 yıldır), ve ben IDE gibi çok değil. Belki de benim yaş örtük göstergesi O başka bir şey gibi bir trade-off var :-) sorunun parçasıdır.

Ben güzel ve basit bir çerçeve olarak Stripes fiş edeceğiz, ancak kapsamı nispeten küçük ve sınırlı çünkü çoğunlukla budur. Bahar gibi büyük çerçeveler "evye" ekosistemler olup, bu çerçeveler biri ile Java öğrenme zor bazı parçaların pürüzsüz fakat gizemli diğer temel yönleri bırakabilir. Yine, kişisel bir tercih meselesi.

Bu dili bilen birilerine olması iyi. Oh, ve bu noktaya, Java API belgelerine bir arkadaş olun. Platformlar gitmek gibi, Java API inişleri ve çıkışları vardır ama çoğunlukla belgeler en az oldukça kapsamlı ve oldukça doğru.

(Ben düşünmek istiyorum) Size en doğrudan PHP deneyimiyle ilgili olacak ne olacak, çünkü Ayrıca, JSP ve Java ve web hizmeti mimarileri ilişkisi gerçekten tanımak isteyeceksiniz.

Bu eski bir yazı biraz gibi görünüyor, ama hey ...

Java C # taşındı ve ben sadece bir rol başladım ve PHP Java hareket ediyorum ...

İlk kapalı: Java harika :)

  • IDE Eclipse almak için buna alışmak sonra, size (dışında SQL bitlerden) IDE terk etmek zorunda kalmazsınız. Bu gerçekten iyi projeleri yönetir, böyle SVN eklentileri gibi eklentileri, alsorts indirebilirsiniz. Bu Eclipse içinde Tomcat sunucusu çalıştırmak için izin verir ve çıktısı hataları düz Eclipse konsola.

  • çerçeve için, ben, ORM için Struts ve Fayans ve Tork kullanılan çevrelerindeki başımı almak için biraz zaman aldı, ama biz arkadaşlar edindim kez, gelişen başka bir yol düşünemiyorum. Ben küçük bir proje için hayal olsa da yükü çok olur!

  • üzerinde bir yazı ile anlaştı - Düşüncesizce JAVA olsun, ben öğrendim ve diğer diller için bolca kullanılan thats nasıl, onların saf ders kitaplarında daha kolay bir sürü Thats öğrenme görsel bir yöntemi var - benim için zaten. Ben bir gün ile ve koşma oldu ve sanırım birkaç hafta içinde kendinden emin - ama her zaman öğrenme :)

  • yip Java sıkı, ama bana ol PHP biraz garip olduğunu 'gevşek hareket için sen, sevgi için geldik.

  • Ayrıca Java bit, çalışan almak gibi kolay çalıştırmak için Tomcat indirmek gerekir.

  • Java bu 'Require_once (some_text_file.php)' çöp, sadece 'ithal myClass' ve size kapalı hiçbiri gitmek, çok güzel tüm sınıfları düzenlemektedir.

  • Beni rahatsız ediyor şeylerden biri, kullandığınız DEĞİLDİR JAR kütüphaneler anlatma yolu yoktur, bu yüzden bir site üzerinde çalışan birkaç yıl sonra, sizin lib klasör biraz dağınık alabilirsiniz - Mulitple insanların kaldırılması ve özellikle eğer işlevler ekleyerek.

Ben gidebiliriz.

Paul

I here en JavaBat kadar isabet öneririz

Size bazı iyi fikirler verecektir. Bu Java bir çok firma kavramak almak için profesyonel bir ortamda 1 katı yıl götürdü ve ben beni içine dövülmüş düşünceleri vardı bir zamanlar oldukça kolayca diğer OO dillere taşımak mümkün olmuştur.

Yaptığım en iyi hamle Java PHP oldu.

Karmaşıklık sakının. Öncelikle, büyük yazılım anahtar basitlik ve iyi bir çerçeve ile kombine PHP Java öldürür neden olmasıdır.

Java ile, servlet kabı ve çerçeve bir köle olma riski. Basit en esnek bir çerçeve seçin. Kontroller ve özel etiketleri şeytan vardır. Sen daha hızlı geliştirme yapmak için tasarlanmış şeyler öğrenme gün israf, ama sonuçta çok karmaşık ve esnek olmayan edeceğiz. Karmaşıklık, derleme, ve statik türleri: Java nedeniyle gelişimi yavaş olacaktır. Null işaretçi istisnalar nefret geleceğiz.

Edit: Araçlar kenara, Java ve PHP çok benzer "C" stil dilleri yapılandırılmıştır. Çok daha çok Python ya da Ruby daha. Bu Java nedenle yabancı hale statik yazarak ve karmaşık araçları.

Benim durumumda, ben sadece php üzerine usul kodlama ile çok ele, böylece Java atlama, ben her şeyi daha ayrıntılı ve php daha az affedici olmak bulabilirsiniz (ama bu şekilde olmalı neden şimdi biliyorum, ve did değil, sadece Java çok seviyorum) ama sınıfları kodumu organize öğrenme ve aynı zamanda tutulması öğrenme IDE yaklaşık 1.5 sadece müdahalesi, deneme yıllar & aldı hata, kendi başıma bir şeyler yapmak (çoğunlukla uygulamaları swing).

Ben sadece eğlenceli hızlı yoludur kendi eşyalarını oluşturmak için orada Java kütüphanelerin büyük miktarda kullanarak, kendi şeyler yaratıyor sanırım. Ayrıca ben iyice java güneş öğreticiler okuyarak daha fazla zaman kurtarabilirdim düşünüyorum. Hatta daha fazla zaman tasarrufu sen "Tekerleği yeniden icat" önlemek kütüphaneler için tam bir arama yaptım emin yapıyor.

İyi şanslar!

Have you seen quercus (http://www.caucho.com/projects-open-source/php-app-server-quercus/)? It might be a good way for you to ease into the Java world without getting overwhelmed.

Edit: Updated with the latest link.

En iyi tavsiye uzak Java kalmak olacaktır.