লম্বোক কীভাবে কাজ করে?


148

আমি আজ লম্বোকের সাথে দেখা করেছি
এটি কীভাবে কাজ করে তা জানতে আমি খুব উদ্বিগ্ন।
একটি জাভা গীক নিবন্ধ কিছু সংকেত দেয় তবে এটি আমার কাছে পুরোপুরি পরিষ্কার নয়:

জাভা 6 টি সহজ সরল একক পদক্ষেপের কম্পিউটিং পাওয়ার প্রক্রিয়াটিকে সহজতর করে, টীকাগুলি মুছে ফেলা এবং জাভ্যাককে টীকাগুলি পরিচালনা করতে সক্ষম করে। এটিই লম্বোকের নেওয়া পথ।

সম্ভবত জাভা 6 এর সাথে সংকলন প্রক্রিয়াটি হ'ল: জাভাক -> এপটি -> লম্বোক অ্যাপটি প্রক্রিয়া -> ক্লাসের ফাইলগুলি পড়ুন এবং এএসএম ব্যবহার করে সেট / সেট পদ্ধতিগুলি যুক্ত করুন ?

আপনি আমাকে প্রক্রিয়া সম্পর্কে আরও বিশদ প্রদর্শন করতে পারেন?


উত্তর:


135

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

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

লম্বোক যা করে তা যদি অভ্যন্তরীণ এপিআইয়ের অবলম্বন না করে করা যায় তবে আমরা অন্য কিছু করতাম, তবে এটি করা যায় না, তাই আমরা অভ্যন্তরীণ এপিআই ব্যবহারটি অবলম্বন করি।

এনবি: আমি লম্বোকের অন্যতম প্রধান বিকাশকারী, সুতরাং আমি সম্ভবত কিছুটা পক্ষপাতদুষ্ট: পি


7
উত্স থেকে শুনতে দুর্দান্ত (+1)। আমি স্বীকার করি, দৌড় সম্পর্কে আমার বক্তব্য বিভ্রান্তিকর ছিল। আমি বোঝাতে চাইছি লম্বোক কেবল সান ভিএমগুলিতে চালাতে পারে তবে ফলাফল কোড অবশ্যই প্ল্যাটফর্মের নিরপেক্ষ।
শন প্যাট্রিক ফ্লয়েড

আমি আশ্চর্যের क्रमে থাকি যে এনটোটেশন প্রসেসরটি জাভাসির মাধ্যমে চালিত হচ্ছে এমন কি এমনকি যদি কলটি করার জন্য কেবলমাত্র একটি প্রসেসর রয়েছে তবে এটি গ্রহগ্রাহী সংকলককে সবকিছু উপস্থাপন করতে পারে।
আর্কিমিডিস ট্রাজানো

@ আরজুইটসারলট: এজন্য আমি সত্যিই এসও পছন্দ করি। মূল দেব থেকে খাঁটি উত্তর।
গৌরব

78

এটি জাভা 6 এ উপলব্ধ জেএসআর 269 প্লাগেবল অ্যানোটেশন প্রসেসিং এপিআই ব্যবহার করে ।

নোট lombok.jarএতে একটি ফাইল রয়েছে /META-INF/services/javax.annotation.processing.Processor। যখন javacএকটি সঙ্কলন ক্লাসপাথ এই ফাইলটি দেখেন, এটা টীকা প্রসেসর সংকলন করার সময় সেখানে সংজ্ঞায়িত চালায়।


দুর্দান্ত উত্তর
গৌরব

54

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

সুতরাং লম্বোক হ'ল একটি বিশাল হ্যাক যা কেবল একটি সান ভিএম (আফাইক) -এর সংকলন চলবে । এটি একটি দুর্দান্ত সফটওয়্যার, তবে এটি এমন একটি মানহীন হ্যাক হওয়ার কারণে অনেকেই ঘৃণা করে।


1
এটি কি এখনও বৈধ তথ্য?
ওন্দ্রা Žižka

1
হা. এটা সত্য, সব।
সান প্যাট্রিক ফ্লয়েড

@SeanPatrickFloyd সংযোজন: আমি এখনো সঙ্গে OpenJDK 11. Lombok টীকা সংকলন কোন সমস্যা ছিল
orithena

1
হ্যাঁ, এটি কাজ করা উচিত আপনি যদি দ্বিতীয় টীকাগুলি প্রসেসরটি না পরিচর্যা করেন এবং হঠাৎ করে জাতি অবস্থার দিকে চলে যান কারণ লোমবোক এএসটি পরিবর্তন করছে অন্য প্রসেসরের সন্ধানের প্রত্যাশা রয়েছে।
শান প্যাট্রিক ফ্লয়েড

2
আমি আমার নিজের প্রশ্নের উত্তর দেওয়ার চেষ্টা করব, আপনি যখন চান্স পেয়ে যাচাই করবেন তবে দয়া করে যাচাই করুন "যেহেতু গ্রোভি / কোটলিন তার নিজস্ব ফুলব্লাউন সংকলক নিয়ে আসে, এটি বাইটকোড তৈরির যত্ন নেবে another অন্য কোনও সংকলক (জাভা সংকলক) বাইটকোড জেনারেশন প্রক্রিয়া হ্যাক করার দরকার নেই।"
তাই-এলোমেলো-ডুড

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