জাভা (এখনও) পছন্দের ক্রস প্ল্যাটফর্মের ভাষা? [বন্ধ]


20

আমি যখন নব্বইয়ের দশকে জাভা ব্যবহার শুরু করেছি, তখন প্রথম দিন থেকেই "সব একবার লিখুন, কোথাও চালান! " এটি সম্ভবত সমস্ত সত্য ছিল এবং আমি পাশাপাশি গায়কদের অংশ ছিল a

মাল্টি প্ল্যাটফর্ম রানটাইম (অজগর, ফ্ল্যাশ, পারল, এইচটিএমএল, পিএইচপি ...) ব্যবহার করে অন্য সমস্ত ভাষা বিবেচনা করে সে সম্পর্কে আর কী ভাবব তা আমি নিশ্চিত নই। তবে আমি এখনও প্রচুর যুক্তি দেখছি যা বলছে আপনার জাভা ব্যবহার করা উচিত কারণ এটি ক্রস প্ল্যাটফর্মের বিকাশের জন্য অনুমিতভাবে ভাল।

তো, আজও কি তা সত্য? জাভা কি এখনও বহু প্ল্যাটফর্ম বিকাশের জন্য পছন্দের ভাষা?

  • ক্রস প্ল্যাটফর্ম দিকগুলিতে ফোকাস সহ নির্দিষ্ট করুন Please
  • আমি সাধারণ ভাষার বৈশিষ্ট্য তুলনা জিজ্ঞাসা করছি না।

আপডেট: এখনও পর্যন্ত দুর্দান্ত প্রতিক্রিয়া! বেশিরভাগ উত্তর জাভা বা ওয়েবের পক্ষে বলে মনে হচ্ছে। স্ক্রিপ্ট ভিড় থেকে কোনও ইনপুট?



3
এই মন্তব্যটি প্রশ্নের কেন্দ্রবিন্দুটিকে সম্বোধন করে না, তবে এটি বিবেচনা করার একটি বিষয়: উইন্ডোজ ব্যবহারকারীদের লক্ষ্যবস্তু করা জাভা ভিত্তিক ওয়েব অ্যাপ্লিকেশন থেকে দূরে থাকার কিছু। উইন্ডোজ জন্য ওরাকল জেভিএম এর ইদানীং প্রচুর সুরক্ষা সমস্যা ছিল। এই হিসাবে, আপনি দেখতে পাবেন যে বিদগ্ধ ব্যবহারকারীরা জাভা ভিত্তিক ওয়েব অ্যাপ্লিকেশন ব্যবহার করবেন না কারণ তারা জেভিএম আনইনস্টল করেছেন।
অকর্মা

আপনার প্রশ্নটি অনুমানের উপর ভিত্তি করে তৈরি করা হয়েছে যে এটি এমনকি পছন্দের ক্রস প্ল্যাটফর্মের ভাষাও শুরু হয়েছিল।
লুকাস রামেজ

উত্তর:


10

পাইথনের মতো স্ক্রিপ্টিং স্টাইলের ভাষা ক্রস প্ল্যাটফর্মের বিকাশকে আরও সহজ করে তোলে। এখন, আপনি পাইথন পছন্দ করেন (বা অন্যান্য ভাষা) আপনার উপর নির্ভর করে এবং আমাদের সম্ভবত এই বিতর্কটি এখানে শুরু করার দরকার নেই।

জাভা আপনাকে কোড লিখতে বাধ্য করে যা বহনযোগ্যভাবে চলবে, অজগর আপনাকে পোর্টেবল কোড লেখার অনুমতি দেয়। আসল পাইথন ভাষা নিজেই বহনযোগ্যভাবে চলবে, তবে বাহ্যিক গ্রন্থাগারগুলি নাও পারে এবং নাও পারে। অতিরিক্তভাবে, অজগর নিখরচায় প্ল্যাটফর্ম নির্দিষ্ট পরিষেবাগুলিতে অ্যাক্সেস দেবে।

জাভা সেখানে কোন সুবিধা আছে? আমি মনে করি উভয় ক্ষেত্রে আপনি অনুরূপ স্বাচ্ছন্দ্যে পোর্টেবল কোড লিখতে পারেন। এটি হল, আপনি কোড লিখতে পারেন এবং এটি সাধারণত বিভিন্ন প্ল্যাটফর্মগুলিতে কাজ করবে। তবে আপনি কেবল কোড লিখতে এবং ধরে নিতে পারবেন না যে এটি সর্বত্র কাজ করবে। আমি একটি অজগর প্রকল্পে কাজ করেছি যা উইন্ডোজ, লিনাক্স এবং ম্যাকের সংস্করণ তৈরি করেছে এবং আমরা খুব কম ক্রস প্ল্যাটফর্ম সমস্যার মধ্যে পড়েছি into (কেবলমাত্র আমার মনে আছে যে আমরা পাইগেমটি ব্যবহার করেছিলাম তার লাইব্রেরিতে একটি বাগ ছিল যা লিনাক্সে অঙ্কনের সমস্যা তৈরি করেছিল we এটি ব্যবহৃত পাইগেমের সংস্করণটি আপগ্রেড করার মাধ্যমে এটি ঠিক করা হয়েছিল)

আর একটি বিষয় মোতায়েনের। আপনি যদি নিজের কোড চালিত স্ট্যান্ডেলোন প্রোগ্রাম বিতরণ করতে চান তবে আপনাকে বিভিন্ন প্ল্যাটফর্মের জন্য বিভিন্ন সংস্করণ তৈরি করতে হবে। জাভার জন্য আপনি একটি সংস্করণ বিতরণ করতে পারেন এবং ধরে নিতে পারেন যে ব্যবহারকারী জাভা ইনস্টল করেছেন বা এটি ইনস্টল করতে পারেন। এক্ষেত্রে জাভা সম্ভবত ডিপ্লয়মেন্ট বিভাগের সরলতায় জয়ী হয়।

শেষ পর্যন্ত, আমি মনে করি এটি আপনার সাথে কোন ভাষার সাথে কাজ করা পছন্দ করে এবং আপনার কোন ধরণের স্থাপনা চালানো উচিত to


18

যদিও জাভা একমাত্র কার্যকর বা ক্রস প্ল্যাটফর্মের সরঞ্জাম নাও হতে পারে তবে এর কিছু শক্তি রয়েছে:

  • এটা অত্যন্ত দ্রুত।
  • এটা অত্যন্ত মজবুত।
  • এটি অত্যন্ত বহনযোগ্য (উদাহরণস্বরূপ, আজ ওএস এক্সে উইন্ডোজ 95 রানের জরিমানা 10 বছর আগে বাইটকোড)।

এবং কিছু দুর্বলতা:

  • কোর জিইউআই লাইব্রেরি (সুইং ...) তাদের বয়স দেখায় (এখানে তৃতীয় পক্ষের সংযোজন সহায়তা)।
  • ভাষা নিজেই কম ভার্বোস হতে পারে (যেমন চেক করা ব্যতিক্রমগুলি ...)।
  • প্রারম্ভকালীন সময় স্নেপ্পিয়ার হতে পারে (যদিও এটি সবসময় উন্নতি করে)।

জাভা প্ল্যাটফর্ম সম্পর্কে বিশেষভাবে কথা বলার সময়, আরও একটি বিষয় রয়েছে:

  • আছে বেশ কিছু ভাষায় জেভিএম এবং চালানো যে তোলার বিষয়ে জাভা সঙ্গে।

19
খুব দ্রুত? কিসের তুলনায়?
হার্ডকোড

18
@ হার্ডকোড: যে কোনও বর্ণিত ভাষা বা সর্বাধিক সংকলিত ভাষার সাথে তুলনা করুন। কিছু ক্ষেত্রে সি এবং সি ++ দ্রুত তৈরি করা যেতে পারে তবে এটি শক্ত এবং কোরের সংখ্যা বৃদ্ধি পেলে আরও শক্ত হতে চলেছে। জাভা সম্মতিতে (সেই একাধিক কোরকে দক্ষতার সাথে ব্যবহার করা) অনুশীলনে অর্জন করা সহজ।
জুনাস পুলক্কা

5
@ হারডকোড, স্পষ্টতই JVM হ'ল প্রায় কোনও ব্যাখ্যা করা ভাষার জন্য দ্রুততম রানটাইম (ভাষা হ্যাকাররা তাদের

14

এটি আগের মতোই আজকের মতো সত্য - এটি পুরোপুরি বলা হয় না। জাভা একবার লিখুন, পরীক্ষা এবং সর্বত্র ডিবাগ করুন। নিশ্চিত যে এটি সম্পূর্ণ তাজা বন্দরের তুলনায় অনেক কম কাজ তবে প্রাথমিক হাইপ আমাদের বিশ্বাসের চেয়ে এটি বেশি কাজ।

আমাদের পণ্যটির একটি জাভা সার্ভার রয়েছে যা উইন্ডোজ বা লিনাক্স উভয়ই চলবে তবে আমরা এটির সাথে ওএস নির্দিষ্ট সমস্যা দেখেছি এবং প্রয়োজনে সমর্থন / পরীক্ষার জন্য আমাদের লিনাক্স এবং উইন্ডোজ উভয়ই সার্ভার উপলব্ধ রয়েছে তা নিশ্চিত করে নিই। জাভা ইউআই-তে সার্ভারের চেয়ে আরও বেশি সমস্যা রয়েছে (যদিও অনেকগুলি প্রসাধনী এবং তাই সম্ভবত অ্যাপ্লিকেশনটির উপর নির্ভর করে উপেক্ষা করা যেতে পারে)।

আমার পক্ষে কড়া ভাষা না হলেও ওয়েবটি পছন্দের ক্রস প্ল্যাটফর্ম প্ল্যাটফর্ম। এইচটিএমএল / জাভাস্ক্রিপ্টের ফ্রন্ট এন্ডের অর্থ হল যে আপনার অ্যাপ্লিকেশনটি বেশ কয়েকটি ক্লায়েন্ট প্ল্যাটফর্মের উপর চলে এবং বেশিরভাগ ক্ষেত্রেই আসল লক্ষ্য ছিল - এটি কোনও ম্যাক বা পিসি, কোন ওএস সংস্করণ ইত্যাদি ছিল কিনা তা চিন্তা করার দরকার নেই।

অবশ্যই আপনি এখনও সার্ভার প্ল্যাটফর্মের নির্দেশ দিচ্ছেন তবে যখন এটি কেবলমাত্র মানুষ অনেক বেশি নমনীয় হয়ে উঠবে, বিশেষত আজকাল যখন বেশিরভাগ সংস্থাগুলি ইতিমধ্যে উইন্ডোজ এবং লিনাক্স সার্ভারগুলির মিশ্রণকে সমর্থন করে support


8
ভাল উত্তর. অবশ্যই, আপনার অ্যাপ্লিকেশনটি সমস্ত বিভিন্ন ব্রাউজার সংস্করণে সঠিকভাবে কাজ করে তা নিশ্চিত করা মাথা ব্যথাও হতে পারে।
টিম গুডম্যান

5
@ টিম: ভাল কথা। আমি বিশ্বাস করি ব্রাউজার অ্যাপ্লিকেশনগুলি জাভা ডেস্কটপ অ্যাপ্লিকেশনগুলির চেয়ে অনেক বেশি "পরীক্ষা এবং ডিবাগ"।
জুনাস পুলক্কা

5
@ টিম: +1। সমস্ত প্রধান ব্রাউজারগুলিতে একইভাবে কাজ করার জন্য একটি ওয়েব অ্যাপ্লিকেশন অ্যাপ্লিকেশন পাওয়া ঠিক যেমন একাধিক ওএস এর ক্ষেত্রে জাভা অ্যাপ্লিকেশনটি একই কাজ করা ঠিক ততটাই শক্ত।
ইয়াভেগেনি ব্রিকম্যান

3
"একবার লিখুন, সর্বত্র ডিবাগ করুন" আমার অভিজ্ঞতায় সত্য নয়। যতক্ষণ আপনি বুদ্ধিমান হন এবং প্ল্যাটফর্ম-নির্দিষ্ট নির্ভরতা এড়িয়ে যান, ততক্ষণ আমার একাধিক প্ল্যাটফর্মগুলিতে (জিইআইআই সহ) একই জাভা কোড চালানোর কোনও সমস্যা ছিল না। হ্যাঁ অবশ্যই আপনার এটি পরীক্ষা করা উচিত, তবে আমি মনে করি জাভা কোডিংয়ের প্রায় 15 বছরের মধ্যে আমি একবারে একটি বাস্তব পোর্টেবিলিটি সমস্যা ছিল (যা জাভার সাহায্যকারী ক্রস-প্ল্যাটফর্ম ফাইল.পথসেটরেটর ব্যবহারের চেয়ে হার্ড কোডিং উইন্ডোজ ডিরেক্টরি বিভাজকগুলির জন্য আমার নিজের দোষ ছিল was !)
মাইকেরা

2
@ মিকেরা - আমরা লিনাক্স এবং উইন্ডোজের মধ্যে এমন সমস্যা দেখেছি যা আমাদের কোডের সাথে কিছুই করার ছিল না। এগুলি বিরল তবে তাদের অস্তিত্ব আছে।
জন হপকিন্স

9

ব্যক্তিগতভাবে, আমি বলব যে জাভা এখনও পছন্দের ক্রস প্ল্যাটফর্মের ভাষা এবং এটি কিছু সময়ের জন্য থাকতে পারে (ওয়েব অ্যাপ্লিকেশনগুলির পাশাপাশি)। আমি এই পোস্টে জাভাতে পছন্দের প্ল্যাটফর্ম হিসাবে এই বিষয়টিতে আরও কিছু লিখেছি , তবে বিশেষত ক্রস প্ল্যাটফর্মের সম্মুখভাগে:

  • যতক্ষণ আপনি আপনার নির্ভরতাগুলির সাথে সতর্ক হন (যেমন দেশীয় কোডের সাথে ইন্টারফেসের জন্য জেএনআই ব্যবহার করে এমন লাইব্রেরিগুলি এড়িয়ে যাওয়া) তবে জাভা সমস্ত বড় জেভিএম প্ল্যাটফর্মগুলিতে চালিত না করে চালিত লেখা যেতে পারে

  • বিচিউস জাভা সাধারণত মেশিন-ইন্ডিপেন্ডেন্ট বাইটকোড হিসাবে বিতরণ করা হয়, আপনি যে কোনও জেভিএম-র সংশোধন ছাড়াই চালাতে পারেন (যেহেতু স্থানীয় জেভিএম নিজেই দেশীয় কোডে জেআইটি-সংকলন পরিচালনা করে)। উদাহরণস্বরূপ, আমি একই জার ফাইলটির সাথে উইন্ডোজ-তে বিকাশের পরে ম্যাকের সাথে প্রথমবার চালানোর জন্য একটি যুক্তিসঙ্গত জটিল জিইউআই অ্যাপ্লিকেশনটি পেয়েছি । অন্যান্য বেশিরভাগ ক্রস-প্ল্যাটফর্মের ভাষাগুলির সাথে এটির বিপরীতে তুলনা করুন, যার জন্য সাধারণত আলাদা প্ল্যাটফর্মের জন্য বিভিন্ন লাইব্রেরি বা পুনরায় সংকলন প্রয়োজন।

  • আপনার প্রয়োজনীয় কোর লাইব্রেরিগুলির অনেকগুলি (জিইউআই, নেটওয়ার্কিং, আইও ইত্যাদি) স্ট্যান্ডার্ড রানটাইমের অংশ এবং ক্রস-প্ল্যাটফর্মের উপায়ে লেখা। সুতরাং আপনার ক্রস-প্ল্যাটফর্ম লাইব্রেরিগুলির অনুসন্ধান এবং পরীক্ষা করার দরকার নেই, আপনি গ্যারান্টিযুক্ত যে আপনার প্রয়োজন সমস্ত কিছু রানটাইম পরিবেশে ইতিমধ্যে রয়েছে।


3

আমার মনে হয় আপনার এই পছন্দগুলি রয়েছে:

1) হয় ক ব্যবহার করুন

  • সংকলিত বা
  • বর্ণিত ভাষা।

2) আপনি কীভাবে আপনার কোডটি প্যাকেজ করবেন এবং বিতরণ করবেন?

  • একটি "ফ্রন্ট-এন্ড", একটি বাইনারি / স্ক্রিপ্ট?
  • একটি "ফ্রন্ট-এন্ড", একাধিক বাইনারি / স্ক্রিপ্ট?
  • একাধিক "সম্মুখ-প্রান্ত", একাধিক বাইনারি / স্ক্রিপ্ট?

এই পছন্দগুলি কার্যকারিতা, সোর কোডের দৃশ্যমানতা এবং বিতরণকে প্রভাবিত করে।

আপনার উত্স কোডটি দেওয়ার বিষয়ে আপনার কি আপত্তি আছে? সংকলিত ভাষাগুলি আপনার জন্য হতে পারে। সংকলিত ভাষাগুলি ব্যাখ্যা করা (এমনকি জেআইটিআইডি) ভাষার চেয়ে মাইক্রো-বেঞ্চমার্কগুলিতে আরও ভাল সম্পাদন করে to এছাড়াও আপনি যদি জাভা, পাইথন, রুবি ইত্যাদির মতো রানটাইম পরিবেশের উপর নির্ভর করেন তবে আপনার কোড বিতরণ করা আরও শক্ত।

আমি দেখতে পেয়েছি যে সর্বাধিক জনপ্রিয় ক্রস-প্ল্যাটফর্ম ডেস্কটপ অ্যাপ্লিকেশনগুলি সি / সি ++ এবং একটি ক্রস-প্ল্যাটফর্ম উইজেট লাইব্রেরি, যেমন অড্যাসিটি, ব্লেন্ডার, ফায়ারফক্স, গুগল আর্থ, ওপেন অফিস, স্কাইপ, সানগবার্ড, স্টেলারিয়াম, ভিএলসি।


আপনার উদাহরণগুলিতে আপনি স্কাইপকে তালিকাবদ্ধ করতে একটি আকর্ষণীয় ত্রুটি করেছেন, তবে এই অতি জনপ্রিয় অ্যাপ্লিকেশনটি উইন্ডোজে ডেল্ফি / পাস্কাল দিয়ে শুরু হয়েছিল এবং ম্যাকোএস / আইফোনে লিনাক্সে সি / সি ++ এবং ম্যাকোএস / আইফোনে উদ্দেশ্যমূলক-সি দিয়ে পোর্ট করা হয়েছিল
ম্যাকসি

আমি মনে করি যে সংকলিত / ব্যাখ্যা করা দ্বিখণ্ডনটি কিছুটা বিভ্রান্তিকর - জাভা কিছুটা অর্থে নয় কারণ এটি বিতরণের জন্য মেশিন-স্বতন্ত্র বাইটকোডে সংকলিত হয়েছে (অর্থাত্ উত্স আকারে নেই), এবং পরে জেআইটি পরবর্তী সময়ে নেটিভ কোডে সংকলিত হয়েছে আপনি যে মেশিন চালাচ্ছেন এটি সম্পূর্ণরূপে ক্রস প্ল্যাটফর্ম, কিন্তু আপনাকে স্থানীয় কর্মক্ষমতাও দেয়, এছাড়াও আপনি না চাইলে আপনার উত্স বিতরণ করতে হবে না। জয় / / win জয়।
মাইকেরা

0

আমি বলব না। পাইথন এবং রুবি প্রচুর ব্যবহৃত হয় এবং তাই ক্লায়েন্ট এবং সার্ভার উভয় পক্ষে জাভাস্ক্রিপ্ট। আমি ব্যক্তিগতভাবে নেট ব্যবহার করি এবং ম্যাক এবং লিনাক্স (উইন্ডোতে বিকাশকালে) চালানোর জন্য এটি পেতে কোনও সমস্যা নেই

- সম্পাদনা- শুনেছি এলএলভিএম জনপ্রিয় হয়ে উঠছে তবে এখনও এটি খুব ছোট। এটি আপনাকে একক বাইনারিতে ক্রস প্ল্যাটফর্ম সি ++ ব্যবহার করতে দেয়। স্পষ্টতই এটি ব্রাউজারে কার্যকর করা হবে তবে আমি এমন একটি উদাহরণ দেখিনি যেখানে এটি আপনাকে ডোম পরিবর্তন করতে বা জাভাস্ক্রিপ্ট কল করতে দেয়।


এলএলভিএম কোনও ব্রাউজারে চলার কথা নয় ... আপনি কি ইমপ্রেস্টেনের কথা বলছেন?
ক্যামিলো মার্টিন

তারিখটি পরীক্ষা করুন। 4 বছর আগে এমস্ক্রিপ্টনের অস্তিত্ব ছিল না। মনে করি নেটিভ্লাইক্লেন্ট কাজ করার জন্য ছিল (এবং ডুম চলছে) তবে তা হয়নি।

এখন আমি তারিখটি দেখতে পাচ্ছি, কিন্তু এখনও, এলএলভিএম ব্রাউজারগুলির সম্পর্কে বিশেষভাবে কখনও ছিল না, তাই না?
ক্যামিলো মার্টিন

1
নাঃ। যদিও আমি ইচ্ছা করি আমি


-1

আপনি যদি মিক্সটিতে মোবাইল প্ল্যাটফর্মগুলি নিয়ে আসেন তবে আপনাকে কমপক্ষে পুনরায় সংযুক্ত করাও দরকার। যেমন অ্যান্ড্রয়েড, জে 2 মিম।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.