2010-02-06 9 views
41

मैं PHP में पिछले 3 वर्षों से वेब अनुप्रयोग विकास कर रहा हूं। मैं जावा को जाने के लिए कगार पर हूं। भाषा का मेरा अंतिम उपयोग करीब 8 साल पहले था और ज्यादातर अकादमिक था।PHP से जावा तक। कोई सलाह?

मैं PHP के ऑब्जेक्ट मॉडल (संस्करण 5) से काफी अच्छी तरह से परिचित हूं और मैं लगभग ओओ में कोडिंग कर रहा हूं। अब मैं उस अनुभव को परिवहन करना चाहता हूं और जावा में विकसित करने के लिए इसका उपयोग करना चाहता हूं। एक संपादक के रूप में एक डेस्कटॉप और सर्वर के रूप में

  • linux
  • विम/जाँचने + प्लगइन्स
  • db
  • अपाचे httpd
  • के साथ अनुभव के लिए MySQL:

    मैं कहां से आ रहा हूँ PHP ढांचे का एक गुच्छा, ज़ेंड + सिद्धांत जो मैं सबसे अधिक उपयोग करता हूं

क्या मैं जावा के लिए एक चाल के बारे में अब तक हुई है:

  • मैं एक IDE की जरूरत है: IntellijIDEA, NetBeans या ग्रहण
  • मैं एक विकास रूपरेखा लेने की जरूरत है। कुछ आवर्ती नाम: स्प्रिंग एमवीसी, पट्टियां, विकेट।

अब मुझे कुछ अंतर्दृष्टि की आवश्यकता है जो इस संक्रमण को आसान बनाने में मदद कर सके। लेकिन जिस तरह से लोग इसके बारे में बात करते हैं, जावा अपने स्वयं के पारिस्थितिक तंत्र के साथ एक पूरी तरह से नया जानवर प्रतीत होता है। ऐसा लगता है कि रूबी या पायथन में जाने के लिए वास्तव में आसान होगा, जो कि जब मैं इसे देखता हूं, तब से उत्सुकता से, जावा अवधारणात्मक रूप से PHP के सबसे नज़दीक लगता है, यद्यपि कठोर और precompiled।

जैसा कि अजीब लगता है, बहुत कम लोगों ने सार्वजनिक रूप से ऐसी चालों के अपने अनुभव को दस्तावेज किया है। मैंने इसी तरह के प्रश्नों के लिए Google, अमेज़ॅन और स्टैक ओवरफ्लो की खोज की है और परिणाम इच्छा के लिए छोड़ देते हैं। मैं बस विश्वास नहीं कर सकता कि अगर मैं जावा में वेब डेवलपर के रूप में उत्पादक बनना चाहता हूं तो मुझे एक नौसिखिया के रूप में शुरू करने की आवश्यकता होगी।

किसी को भी जवाब देने के लिए स्वागत है, लेकिन मुझे कुछ हद तक लगता है कि दोनों भाषाओं में कुछ मूल्यवान अनुभव वाले लोग इस चर्चा को सबसे अधिक समृद्ध करेंगे।

  • आपको जावा में जल्दी से जाने में क्या मदद मिली?
  • जावा में सर्व अवधारणाएं क्या हैं और PHP से अनुपस्थित हैं और इसके विपरीत?
  • जावा डेवलपर्स जावा जाने के लिए कुछ गॉथस।
  • संक्रमण से पूरा होने से कितने समय पहले पूरा हो गया था?
+0

मैंने नेटबीन का संक्षिप्त रूप से उपयोग किया, फिर ग्रहण का उपयोग करके समाप्त हो गया क्योंकि यही वह स्कूल व्याख्यान में उपयोग किया जाता था। सबसे पहले किताब पढ़ने से मूल बातें जानें। जावा में अपनी खुद की सामग्री बनाना सबसे तेज़ है (आवश्यक होने पर जावा सूरज ट्यूटोरियल पढ़ना और एसओ पर पूछना)। मुझे लगभग 1.5 साल लगे (लेकिन मेरे पास पहले ओओपी अनुभव नहीं था, केवल PHP, एलएएमपी वेबसाइटों पर मामूली पटकथा)। मुझे लगता है कि ग्रहण आईडीई ने सीखने की प्रक्रिया को भी आसान बना दिया है, शॉर्टकट कुंजियों को सीखना इसे और भी बेहतर बनाता है। – KJW

+0

@mike 7 साल बाद, क्या यह संक्रमण अच्छी तरह से चला गया? क्या आप इसे किसी और को सुझाव देंगे? – LePhleg

+1

@LePhleg 7 साल बाद उत्तर अभी भी होगा "यह निर्भर करता है कि आप क्या कर रहे हैं"। मेरी राय है कि जावा या पायथन जैसी अच्छी प्रैक्टिस भाषाओं की ओर एक उभरते डेवलपर को चरवाहा करने के लिए बेहतर परिपक्व समुदाय और टूलिंग के कारण बेहतर ढंग से सुसज्जित किया जाता है। PHP में प्रवेश के लिए कम बाधा है जो नियोक्ताओं के लिए उम्मीदवारों के विस्तृत चयन में और उम्मीदवारों के लिए व्यापक चयन नौकरियों में अनुवाद करता है। मेरे लिए, मेरे शिल्प को सम्मानित करना आसानी से सुलभ नौकरियों की अल्पकालिक संभावना से अधिक मूल्यवान था। PHP पारिस्थितिक तंत्र आजकल पूरी तरह से बदल सकता है, इसलिए मेरा बिंदु मंथन हो सकता है। –

उत्तर

20

मैं एक भाषा सीखने के साथ ही एक आईडीई सीखने की कोशिश नहीं करता।

  • चींटी, अपनी परियोजना के आयोजन के लिए, स्वचालित परीक्षण स्वीट, वृद्धिशील compiles
  • BeanShell इंटरैक्टिव के लिए चल रहा है: कोई आसान संक्रमण अपने खोल और अभ्यस्त पाठ संपादक से चिपक, और प्रयोग निम्नलिखित खोल के अनुकूल उपकरण होगा परीक्षण, जल्दी से चीजों को आजमाने की कोशिश
  • एक त्वरित चाल: कमांडलाइन से javap मानक पुस्तकालय में किसी भी वर्ग के लिए विधि हस्ताक्षर देगा। php -r के समान लेकिन जावा टाइप होने के बाद से अधिक जानकारी देता है।

जावा के लिए ऑनलाइन दस्तावेज सटीक, पेशेवर और स्वर और प्रारूप में सुसंगत है। PHP में विपरीत जहां सभी फ़ंक्शन एक फ्लैट नेमस्पेस में हैं, जावा में मानक पुस्तकालय श्रेणी पदानुक्रम हैं।आपको उस मानक पुस्तकालय के चारों ओर अपना रास्ता पता होना है, जिसका अर्थ है पदानुक्रम + जिम्मेदारियां: उदाहरण के लिए आपको यह जानना होगा कि java.util.List आदेशित प्रविष्टियों की अवधारणा के अतिरिक्त java.util.Collection का सबिनटरफ़ेस है। आपके सिर में उस जानकारी के साथ, java.util.List के लिए एक Google खोज आपको कक्षा के लिए जावाडोक ले जाएगी, और जावाडोक आपको सटीक विधि हस्ताक्षर बताएगा और आपको ठोस कार्यान्वयन के चयन से लिंक करेगा।

कुछ विविध भेद:

  • स्ट्रिंग्स बाइट्स के दृश्यों के बजाय पात्रों में से दृश्यों रहे हैं। इसे करने का बिल्कुल सही तरीका।
  • सिस्टम बाइट बफर के बजाय धारा (बाइट्स या वर्णों) स्ट्रीम का उत्पादन और उपभोग करते हैं। उदाहरण के लिए, यदि आप PHP में आउटपुट फ़िल्टर करना चाहते हैं, तो मानक अभ्यास एक बाइट बफर के लिए ob_get_contents से पूछना है ताकि पूरे बफर को बदल दिया जा सके। जावा में, आप अपने सर्वलेट में एक फ़िल्टर जोड़ते हैं जो आउटपुट को बाइट या एक चरित्र में एक समय में बदल देता है। शुरुआत में काम करने के लिए यह थोड़ा प्रभावशाली है लेकिन जब आप इसका उपयोग करते हैं तो यह आसान और अधिक लेगो-जैसा होता है - आपके स्ट्रीम प्रोसेसर को यह नहीं पता होना चाहिए कि चीजें कहां से आती हैं और कहां जाती हैं।
  • लगभग हर चीज उपयोगी एक इंटरफ़ेस है, और एक इंटरफेस का एक उदाहरण बनाना मुश्किल, गैर-मानकीकृत, और हमेशा अच्छी तरह से प्रलेखित नहीं हो सकता है। PHP में, आप new DOMDocument() के साथ एक्सएमएल के साथ उठ सकते हैं और चल सकते हैं। जावा में, org.w3c.dom.Document एक इंटरफ़ेस है, इसलिए नया() काम नहीं करेगा। जैवडोक इस बात के बारे में बहुत सटीक है कि इंटरफ़ेस उदाहरण अस्तित्व में आने के बाद कैसे व्यवहार करते हैं, लेकिन जब आप यह पता लगाने की कोशिश कर रहे हैं कि वास्तव में कोई ऑब्जेक्ट कैसा होता है तो यह काफी कॉय और प्रूडिश हो सकता है। अक्सर, आपको ट्यूटोरियल और कोड उदाहरणों को देखना होगा और बॉयलरप्लेट का एक टुकड़ा कॉपी करना होगा जो आपको DOMDocument या java.sql.Connection या जो कुछ भी देता है। वसंत जैसे एक कारण ढांचे लोकप्रिय हैं कि वे बदसूरत ऑब्जेक्ट-निर्माण कोड को अलग करते हैं और आपको एक ऐसी दुनिया के साथ पेश करते हैं जहां इंटरफ़ेस कार्यान्वयन केवल जादुई रूप से होते हैं।

मैं वास्तव में विपरीत दिशा में स्विच किया। मैंने पाया कि जावा एक बड़ी कंपनी में बहुत अच्छी तरह से काम करता है जहां आप एक घटक पर काम कर रहे हैं, इसे किसी अन्य व्यक्ति को सौंप सकते हैं जो उस घटक को एक बड़े सिस्टम में एकीकृत करता है, जिसे तब पैक किया जाता है और एक अलग ऑपरेशन टीम को सौंप दिया जाता है - जहां यह सभी संकेत और कॉन्फ़िगरेशन (FactoryBuilderFactory टाइप एब्स्ट्रैक्शन, वेब.एक्सएमएल फाइल इत्यादि) समझ में आता है और कुछ उपयोगी करता है। एक छोटी सी कंपनी में जहां प्रोग्रामर ओप के कर्मियों हैं, जावा बहुत अधिक काम है। जावा के साथ, आपको जावा प्रक्रिया शुरू करने जैसी अवधारणाओं में उपयोग करना होगा, यह सुनिश्चित करने के लिए जावा प्रक्रिया की निगरानी करना, यह सुनिश्चित करने के लिए जावा प्रक्रिया की निगरानी करना है कि यह कोमा में नहीं जाता है, जहां यह जीवित है लेकिन जवाब नहीं दे रहा है, जब आप कोड अपडेट कर रहे हैं, तो न्यूनतम प्रक्रिया में जावा प्रक्रिया को बंद करना और पुनरारंभ करना आदि। यदि आपके पास अलग-अलग सेशन कर्मियों हैं, तो यह ठीक है, यह उनका काम है, वे बहुत अच्छे हैं। यदि आप प्रोग्रामर हैं, तो जावा प्रक्रिया को बेबीसिटिंग करना विचलित हो सकता है और अच्छी तरह से करना मुश्किल हो सकता है।

+0

जावा चार बहुत छोटा है। यूनिकोड के लिए 16-बिट अपर्याप्त है। इसके अतिरिक्त यह नया "कोड प्वाइंट" चीज है जो इसे ठीक से करने के लिए स्पष्ट रूप से आवश्यक है। दूसरे शब्दों में - स्ट्रिंग पर्याप्त नहीं है। –

+0

हां, अच्छा बिंदु। कड़ाई से, जावा स्ट्रिंग वर्णों के अनुक्रम नहीं हैं, वे अनुक्रम हैं, यह क्या है ... यूटीएफ 16 कोड इकाइयां? जावा प्रोग्रामर 1995 से चरित्र मॉडल के साथ फंस गए हैं, जब 16 बिट्स पर्याप्त विचार किए गए थे। 1 9 65 के चरित्र मॉडल PHP प्रोग्रामर वर्तमान में काम करते हुए उत्पादकता और डेटा अखंडता के लिए यह अभी भी बेहतर है। मैंने अभी तक PHP6 वर्ण मॉडल की जांच नहीं की है, जिसे अधिक यूनिकोड-संगत होने की सूचना दी गई है। –

8

जावा ट्यूटोरियल

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

के साथ शुरू तो खरीदने के हेड फर्स्ट जावा

http://oreilly.com/catalog/9780596004651

जाना यह आप की परवाह किए बिना भाषा है जो आवश्यक है में बहुत जल्दी जा रहा हो जाएगा आप क्या करना चाहते हैं।

2

मैं here

पर JavaBat ऊपर से टकराने की सलाह देते हैं यह आप कुछ अच्छे विचार दे देंगे। जावा पर बहुत दृढ़ समझ पाने के लिए मुझे एक पेशेवर सेटिंग में 1 ठोस वर्ष लगा और मैं अपने विचारों को पीटा जाने के बाद अन्य ओओ भाषाओं में आसानी से आगे बढ़ने में सक्षम हूं।

+0

+1 यह वास्तव में निफ्टी साइट है। बुकमार्कमार्क – KJW

8

कड़ाई से बोलते हुए, आप को जावा में काम करने के लिए एक आईडीई की आवश्यकता नहीं है। मैं एक दशक से अधिक समय तक जावा में भारी कोडिंग कर रहा हूं (और 25 से अधिक वर्षों तक अन्य सामानों पर भारी), और मुझे आईडीई पसंद नहीं है। शायद मेरी उम्र का निहित संकेतक इस मुद्दे का हिस्सा है :-) यह किसी और चीज की तरह एक व्यापार-बंद है।

मैं स्ट्रिप्स को एक अच्छा सरल रूपरेखा के रूप में प्लग करूंगा, लेकिन ज्यादातर ऐसा इसलिए है क्योंकि यह अपेक्षाकृत छोटा और सीमित है। वसंत जैसे बड़े ढांचे "रसोई सिंक" पारिस्थितिक तंत्र हैं, और उन ढांचे में से एक के साथ जावा सीखना मुश्किल भागों में से कुछ को सुगम बना सकता है लेकिन अन्य बुनियादी पहलुओं को रहस्यमय छोड़ देता है। फिर, यह व्यक्तिगत वरीयता का मामला है।

किसी के पास यह जानना अच्छा है कि भाषा कौन जानता है। ओह, और उस बिंदु पर, जावा एपीआई दस्तावेज का एक दोस्त बनाओ। जैसे-जैसे प्लेटफॉर्म जाते हैं, जावा एपीआई में इसके ऊपर और नीचे होते हैं लेकिन अधिकांश भाग के लिए दस्तावेज कम से कम काफी सुंदर और सुंदर सटीक होता है।

आप जेएसपी और जावा और जावा वेब सेवा आर्किटेक्चर से इसके संबंधों से वास्तव में परिचित होना चाहते हैं, क्योंकि यह होगा कि आप अपने PHP अनुभव से सीधे संबंधित होंगे (मुझे लगता है)।

+5

आपके द्वारा प्रोग्रामिंग की जाने वाली भाषा के बारे में जानने वाले आईडीई का उपयोग नहीं करना, अपने और अपने नियोक्ता समय बर्बाद कर रहा है। –

+1

यह राय का विषय है। यदि आप अपनी उत्पादकता में सहायता के लिए आईडीई पाते हैं तो मैं आपके लिए खुश हूं। – Pointy

+1

वाह कोई आईडीई ... यह काफी बयान है। पट्टियों के बारे में कभी नहीं सुना है मैं इसे देख लूंगा। – KJW

4

मैंने जो सबसे अच्छा कदम बनाया वह जावा से PHP तक था।

जटिलता से सावधान रहें। मुख्य रूप से, महान सॉफ्टवेयर की कुंजी सादगी है, और यही कारण है कि PHP एक अच्छे ढांचे के साथ संयुक्त जावा को मारता है।

जावा के साथ, आप अपने सर्वलेट कंटेनर और ढांचे के दास बनने का जोखिम लेते हैं। सबसे सरल सबसे लचीला ढांचा चुनें। नियंत्रण और कस्टम टैग शैतान हैं। आप उन चीजों को सीखने के दिन बर्बाद कर देंगे जिन्हें विकास को तेज बनाने के लिए डिजाइन किया गया था, लेकिन आखिरकार बहुत ही जटिल और लचीला है। जावा: जटिलता, संकलन, और स्थिर प्रकार के कारण विकास धीमा कर देगा। आप शून्य सूचक अपवादों को नाराज करने आएंगे।

संपादित करें: उपकरण अलग, जावा और PHP बहुत समान रूप से संरचित "सी" शैली भाषाएं हैं। पायथन या रूबी की तुलना में बहुत अधिक है। यह स्थैतिक टाइपिंग और जटिल उपकरण है जो जावा को इतना विदेशी बनाता है।

+3

* निश्चित रूप से चकुन à son goût *, लेकिन जावा से भागने के कारणों के रूप में आप जो कुछ वर्णन करते हैं, वह मेरे लिए, महान ताकत और "शक्ति उपकरण" हैं। लेकिन मैं सहमत हूं कि ढांचा पसंद बहुत महत्वपूर्ण है, और सलाह देना मुश्किल है क्योंकि यह बहुत ही व्यक्तिपरक है। – Pointy

+8

स्टेटिक टाइपिंग _the_ गुणवत्ता है जो जावा में कैथेड्रल बनाना संभव बनाता है। मेरी राय में। –

+0

@rick, यह वास्तव में सवाल का जवाब नहीं देता है ... – Pool

3

यह एक पुरानी पोस्ट का एक सा हो गया लगता है, लेकिन हे ...

मैं जावा के लिए सी # से चले गए और मैं सिर्फ एक भूमिका शुरू कर दिया है और जावा से पीएचपी में जाने रहा हूँ ...

सबसे पहले: जावा भयानक है :)

  • अपने आईडीई के लिए ग्रहण मिलता है, एक बार आप इसकी आदत हो, तो आप आईडीई (एसक्यूएल बिट्स से अलग) छोड़ने के लिए की आवश्यकता नहीं है। यह परियोजनाओं को वास्तव में अच्छी तरह से प्रबंधित करता है, आप एसवीएन प्लगइन्स जैसे प्लगइन के कई प्रकार डाउनलोड कर सकते हैं।यह आपको एक्लिप्स के भीतर एक टॉमकैट सर्वर चलाने की अनुमति देता है और यह सीधे एक्लिप्स कंसोल में त्रुटियों को आउटपुट करेगा।

  • ढांचे के लिए, मैंने स्ट्रैट्स और टाइल्स और ओआरएम के लिए टोक़ का इस्तेमाल किया, मुझे अपने सिर को पाने के लिए थोड़ी देर लग गई, लेकिन एक बार जब हम दोस्त बनाते हैं, तो मैं विकास के किसी भी अन्य तरीके की कल्पना नहीं कर सकता। हालांकि मैं एक छोटी परियोजना के लिए कल्पना करता हूं, यह बहुत अधिक उपरांत होगा!

  • उपरोक्त पोस्ट के साथ सहमत हो गया - हेडफ़ीरस्ट जावा प्राप्त करें, मैंने यह कैसे सीखा और मैंने इसे कई अन्य भाषाओं के लिए उपयोग किया, उनके पास सीखने की एक दृश्य विधि है जो शुद्ध पाठ्यपुस्तकों की तुलना में बहुत आसान है - वैसे भी मेरे लिए। मैं एक दिन में चल रहा था और मुझे विश्वास करता था कि कुछ हफ्तों के भीतर मुझे विश्वास है - लेकिन हमेशा सीखना :)

  • यिप जावा सख्त है, लेकिन आप इसे प्यार करने के लिए आते हैं, क्योंकि मेरे लिए 'ol PHP थोड़ा डरावना

  • आपको अपने जावा बिट्स चलाने के लिए टॉमकैट डाउनलोड करने की भी आवश्यकता होगी, इसे चलाने के लिए आसान है।

  • जावा आपके सभी वर्गों को बहुत अच्छी तरह से व्यवस्थित करता है, इनमें से कोई भी 'require_once (some_text_file.php)' बकवास नहीं है, बस 'myClass आयात करें' और आप जाने के बाद।

  • मुझे परेशान करने वाली चीजों में से एक है, यह कहने का कोई तरीका नहीं है कि आप कौन सी जेएआर पुस्तकालयों का उपयोग नहीं कर रहे हैं, इसलिए साइट पर काम करने के कुछ सालों बाद, आपका lib फ़ोल्डर थोड़ा गन्दा हो सकता है - खासकर अगर mulitple लोग कार्यक्षमता को हटा रहे हैं और जोड़ रहे हैं।

मैं आगे बढ़ सकता था।

पॉल

0

मेरे मामले के लिए, मैं केवल php पर प्रक्रियात्मक कोडिंग के बहुत से निपटा है, तो जावा के लिए कूद, न केवल मैं सब कुछ अधिक वर्बोज़ और php की तुलना में कम क्षमाशील होना करने के लिए मिला है (लेकिन अब मुझे पता है यह इस तरह से क्यों होना चाहिए, और मुझे जावा बहुत पसंद है) लेकिन कक्षाओं में अपना कोड व्यवस्थित करना सीखना और ग्रहण आईडीई सीखना सीखने के बारे में 1.5 साल लग गए, परीक्षण & त्रुटि, अपने स्वयं के सामान (मुख्य रूप से स्विंग अनुप्रयोग) ।

मुझे लगता है कि अपनी खुद की सामग्री बनाने के लिए वहां बड़ी मात्रा में जावा पुस्तकालयों का उपयोग करके, केवल अपने आप को सामान बनाना, मजेदार तरीका सबसे तेज़ तरीका है। मुझे लगता है कि मैं जावा सूरज ट्यूटोरियल को अच्छी तरह से पढ़कर और अधिक समय बचा सकता था। यहां तक ​​कि अधिक समय बचाने से यह सुनिश्चित हो रहा है कि आपने पुस्तकालयों की पूरी तरह से खोज की है जो "पहिया को पुनर्निर्मित करने" को रोकती है।

शुभकामनाएं!

संबंधित मुद्दे