জাভা কি মেশিন কোডে সংকলন করা সম্ভব? (বাইকোড নয়)


32

আপনি কি জাভা সরাসরি মেশিন কোডে সংকলন করতে পারেন?

আমি এটি করতে চাই তাই এটি কোন প্ল্যাটফর্মগুলিতে ব্যবহার করা হয়েছে তার উপর আমার নিয়ন্ত্রণ রয়েছে এবং সি, সি ++ ইত্যাদি জানি না

উত্তর:


36

দেখা যাচ্ছে যে জাভার জন্য জিএনইউ সংকলক জাভা উত্স কোডটিকে জাভা বাইটকোড বা মেশিন কোডে রূপান্তর করতে পারে। এটি বিদ্যমান জাভা বাইটকোডকে মেশিন কোডে রূপান্তর করতে পারে। তবে শেষ খবরটি ২০০৯ সালের, সুতরাং আমি নিশ্চিত নই যে এটি কতটা বর্তমান এবং এটি জাভা ভাষার সর্বশেষ বৈশিষ্ট্যগুলি পরিচালনা করতে পারে কিনা।


1
যদি জাভা বাইটকোড ২০০৯ সাল থেকে পরিবর্তন না হয়ে থাকে তবে এটি এখনও বিকাশকারীদের "আরে! আমি এখনও এখানে আছি" সফ্টওয়্যারটির উপরে পতাকা না নিয়ে কাজ করা উচিত।
রবার্ট হার্ভে

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

1
এক্সেলসিওর জেইটি এখনও সক্রিয় (বাণিজ্যিক) বলে মনে হচ্ছে। ফুজিৎসু টাওয়ারজে ছিল, তবে মনে হয় এটি এক দশক আগে মারা গিয়েছিল এবং সেসময় বেশ অর্থহীন ছিল।
টম হাটিন -

আমি জাভা 6 ব্যবহার করছি তাই জাভা 7 আমার ক্ষেত্রে কোনও সমস্যা নয়
রাসেল

1
জিসিজে ওয়েবসাইটটি জানায় যে এটি জাভা ১.৫ এমনকি পুরোপুরি সমর্থন করে নি। : এই থ্রেড দেখুন stackoverflow.com/a/4040404/1257384
GregT

13

একেবারে সরাসরি ওপিকে উত্তর দিচ্ছেন না, তবে এটি সম্ভবত একটি আকর্ষণীয় বিষয়। জাভা তিনটি পদ্ধতিতে চালানো যেতে পারে:

  1. মিশ্র (ডিফল্ট) - ইন্টারপ্রিটেড এবং মেশিন সংকলিত কোডের একটি সংমিশ্রণ (মেশিন সংকলিত == রানটাইমের সময় জেআইটি দ্বারা সংকলিত)
  2. সঙ্গে -Xintব্যাখ্যা করা - - পতাকা বাইট কোড শুধুমাত্র
  3. সঙ্গে -Xcompসংকলিত - - পতাকা মেশিন কম্পাইল

1
@ মার্টজিন এটি হটস্পটের জন্য? সুযোগমতো আপনার কাছে রেফারেন্স রয়েছে -Xcompকারণ আমি জেডিকে 7 ডকুমেন্টেশনে বা হটস্পট বিকল্পগুলির ডকুমেন্টেশনের মধ্যে এটির সন্ধান করতে পারি নি এবং নিশ্চিত না যে আপনার কাছে কিছু লুকানো মেলিং তালিকার গোপনীয়তা রয়েছে যা আমরা, নিছক নশ্বরগণ :-) সম্পর্কে অবগত নই
এডালোরজো

2
এটি ইচ্ছাকৃতভাবে লুকানো বিকল্প হ্যাঁ :-)। বিভিন্ন ওপেনজেডক (ওপেনডজ.ইক.ভা.ভা.নেট) মেলিংয়ের তালিকাগুলি রয়েছে যা থেকে আপনি এই ধরণের তথ্য সংগ্রহ করতে পারেন - বা উত্স কোডটি পড়তে পারেন :-)
মার্টিজান ভারবার্গ

দয়া করে মনে রাখবেন যে আমার পরীক্ষাগুলি অনুসারে, -এক্সকম্পের কিছু ক্ষেত্রে দরিদ্র পারফরম্যান্স (দুটির একটি উপাদান দ্বারা) থাকতে পারে।
ড্যানিয়েল লেমির

হ্যাঁ ভালো. ঠিক সময়ে সময়ে অপ্টিমাইজেশনগুলি করা শক্ত যখন জেআইটি এমনকি চলমান না। থাকতে পারে!
candied_orange

উম্মম তাই এই বিকল্পগুলি হয় javac? -Xcomp ব্যবহার করার সময় এটি একটি একক বাইনারি ফাইল ডিফল্ট আউটপুট দ্বারা করে?
আলেকজান্ডার মিলস

7

System.getProperty ("os.name") ব্যবহার করে অপারেটিং সিস্টেমটি সনাক্ত করা ভাল । এটি আপনাকে একাধিক ওএস সমর্থন করতে বাছাই করতে দেয় তবে অন্যকে বাদ দেয়।


এটিকে বোকা বানানো / গেমড করার কোনও উপায় আছে কি?
হতাশিত

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

এটি এমনও হতে পারে যে তিনি কোনও ওএস-স্বতন্ত্র পদ্ধতিতে প্রোগ্রামটিকে নির্দিষ্ট হার্ডওয়্যারের সাথে টাই করতে চান।
হতাশ

আপনি জেভিএম জন্য বিশেষ আর্গুমেন্ট ব্যবহার করে "os.name" সিস্টেম সম্পত্তি জোর করতে পারেন: java -Dos.name=MacOS
স্কাইড্যান

2

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

সম্পর্কিত প্রশ্ন: 'আমি জাভা দেশীয় কোডে সংকলন করতে পারি?' https://stackoverflow.com/questions/2991799/can-i-compile-java-to-native-code/50555050#50555050


PS GCJ আর রক্ষণাবেক্ষণ করা হয় না।
সূত্র: 'জিসিজে এর বিলোপ' http://tromey.com/blog/?p=911

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