สับเปลี่ยนทางเลือกใหม่ไปยัง JRebel [ปิด]


190

JRebel อนุญาตให้ใช้โค้ดที่คอมไพล์ใหม่เพื่อปรับใช้ใหม่โดยไม่ต้องรีสตาร์ทแอปพลิเคชัน ฉันสงสัยว่ามีทางเลือกอื่นหรือไม่ (ฟรี) คำถามที่พบบ่อยหน้าตอบคำถามนี้ แต่ผมแน่ใจว่ามันลำเอียงต่อ JRebel คำถามนี้ถามเมื่อหนึ่งปีก่อนในเว็บไซต์นี้ แต่ฉันกำลังนำมันกลับมาเพื่อดูว่ามีใครมีข้อมูลใหม่หรือไม่

ในหมายเหตุด้านข้างฉันชอบ JRebel จริงๆ แต่ถ้ามีทางเลือกฟรีฉันยินดีที่จะลอง

อีกหนึ่งบันทึกย่อฉันกำลังทำงานในโครงการโอเพนซอร์สและพวกเขาเสนอใบอนุญาตฟรีหนึ่งปีให้กับผู้ที่สามารถพิสูจน์ได้ว่าพวกเขาอยู่ในโครงการโอเพ่นซอร์ส ซึ่งใช้งานได้ดีสำหรับฉัน (www.kuali.org) แต่ฉันจะไม่ทำโครงการนั้นตลอดไป


53
คำถามที่ดี. เรากำลังมองหาทางเลือกอื่นสำหรับ JRebel เช่นกันเนื่องจากแผนกขายของพวกเขานั้นรุกรานอย่างมาก เราไม่มีปัญหาในการจ่ายเงินสำหรับผลิตภัณฑ์อย่าง JRebel แต่ไม่ใช่เมื่อพวกเขารบกวนนักพัฒนาและฝ่ายไอทีของเรา 24/7
neu242

4
มีทางเลือกให้ jRebel โดย ZeroTurnAround ของตัวเอง: Jrebel รุ่นฟรีสำหรับโครงการโอเพนซอร์สและกรณีศึกษา ... my.jrebel.com
dellasavia

2
ฉันรู้ว่ามันเป็นคำตอบที่ล่าช้าคุณสามารถดูได้ที่Spring Loaded - ซึ่งเป็นเอเจนต์ JVM สำหรับการโหลดไฟล์คลาสที่เปลี่ยนไปขณะที่ JVM กำลังทำงานอยู่ มันแปลงชั้นเรียนที่เวลาในการโหลดเพื่อให้พวกเขาคล้อยตามเพื่อโหลดในภายหลัง ซึ่งแตกต่างจาก 'รหัสร้อนแทนที่' ซึ่งช่วยให้การเปลี่ยนแปลงง่ายเมื่อ JVM กำลังทำงาน (เช่นการเปลี่ยนแปลงร่างกายวิธี) สปริงโหลดช่วยให้คุณสามารถเพิ่ม / แก้ไข / ลบวิธีการ / เขต / คอนสตรัคเตอร์และอื่น ๆ ...
Simple-Solution

ดีบักเกอร์ Eclipse - แทนที่รหัสสดของคุณทันที
user1050755

ลองโพสต์นี้ในเว็บไซต์ของน้องสาวที่แนะนำซอฟท์แว Stack แลกเปลี่ยน
Basil Bourque

คำตอบ:


97

ลองดูที่DCEVMเป็นการดัดแปลงของ HotSpot VM ที่อนุญาตให้มีการกำหนดคลาสใหม่แบบไม่ จำกัด ที่รันไทม์ คุณสามารถเพิ่ม / ลบฟิลด์และเมธอดและเปลี่ยนประเภทซูเปอร์ของคลาสที่รันไทม์ คุณสมบัติของ DCEVM อาจจะบูรณาการในการปรับปรุงในอนาคตของ Java เป็นส่วนหนึ่งของJEP 159

ไบนารีที่มีอยู่ในไซต์ดั้งเดิมนั้น จำกัด อยู่ที่ Java 6u25 และ Java 7 เวอร์ชันแรกโครงการนี้มีการแยกบนGithubและรองรับ Java 7 และ 8 เวอร์ชันล่าสุดผู้ดูแลระบบจัดเตรียมไบนารีสำหรับ 32/64 บิต VM บน Windows / ลินุกซ์ เริ่มต้นด้วย Java 11 โปรเจ็กต์ย้ายไปที่ที่เก็บGitHubใหม่และตอนนี้ยังมีไบนารีสำหรับ OS X ด้วย

DCEVM ได้รับการบรรจุสำหรับ Debian และ Ubuntu มันรวมเข้ากับ OpenJDK ได้อย่างสะดวกและสามารถเรียกjava -dcevmใช้ได้ ชื่อของแพ็คเกจขึ้นอยู่กับรุ่นของ JDK เริ่มต้น:


5
มันใช้งานได้ดีฉันพบว่ามันเร็วกว่าและใช้หน่วยความจำน้อยกว่า JRebel ข้อ จำกัด เพียงอย่างเดียวคือติดกับ Java 6u25
Emmanuel Bourg

3
ขอบคุณมาก. ฉันเจ๊งทั้งวันพยายามทำให้ jRebel ทำงานตามที่ต้องการ DCEVM มาช่วยเหลือ
alehro

4
ต่อไปนี้เป็นคำแนะนำการสร้างและติดตั้งแบบสมบูรณ์สำหรับ DCEVM บน JDK 7u45 และ MacOSX: neu242.livejournal.com/52962.html
neu242

1
JEP 159 ไม่ได้เป็นส่วนหนึ่งของ JDK 8 มันอาจเลื่อนออกไปเป็น JDK 9 แต่ยังไม่มีการยืนยัน
KrishPrabakar

5
พบ JVM 1.7 ไบนารีเต็มรูปแบบที่นี่: dcevm.nentjes.comดังนั้นไม่จำเป็นต้องแก้ไข JVM ของคุณ ฉันลองใช้ win64 แล้วก็ใช้ได้ดีสำหรับฉัน ฉันยัง blogged เกี่ยวกับที่นี่ถ้าคุณต้องการรายละเอียดเพิ่มเติม: javainformed.blogspot.com/2014/01/jrebel-free-alternative.html
dnang

42

Hotswap Agentเป็นส่วนเสริมของ DCEVM ซึ่งรองรับจาวาเฟรมเวิร์กจำนวนมาก (โหลดคำนิยาม Spring bean, การแมปเอนทิตีไฮเบอร์เนต, การตั้งค่าระดับตัวบันทึก, ... )

นอกจากนี้ยังมีเอกสารจำนวนมากเกี่ยวกับวิธีตั้งค่า DCEVM และไบนารีที่รวบรวมสำหรับ Java 1.7


5
ตอนนี้พวกเขามีเว็บไซต์ทุ่มเท: hotswapagent.org โครงการค่อนข้างใหม่ แต่ดูเหมือนว่าจะทำงานได้ค่อนข้างดี
Didier L

ฉันทำตามบทช่วยสอนนี้เพื่อรวมไว้ใน eclipse หลังจาก isntalling มัน: tirthalpatel.blogspot.fr/2014/06/…มันใช้งานได้เหมือนเสน่ห์
jpprade

@edudant หลังจากติดตั้ง 'ตัวแทน Hotswap' เราจำเป็นต้องติดตั้ง DCEVM หรือไม่ เพราะฉันได้ติดตั้ง DCEVM โดยใช้ "sudo apt install openjdk-11-jre-dcevm" ใน Ubuntu 19.04 และปลั๊กอินใน IntelliJ Ultimate 2019.1.3 หากการติดตั้ง 'ตัวแทน Hotswap' ทำหน้าที่ของ JRebel เพียงอย่างเดียวการใช้ DCEVM คืออะไร?


20

โดยพวก Spring ใช้สำหรับโหลด Grails แต่ทำงานร่วมกับ Java ด้วย:

https://github.com/SpringSource/spring-loaded


3
ฉันไม่ต้องการบ่น แต่สปริงโหลดไม่รองรับการโหลดซ้ำ
lbednaszynski

ดังที่ฉันจำได้มีคุณสมบัติของระบบที่คุณสามารถตั้งค่าให้บอกได้ว่าแพ็คเกจใดที่สามารถโหลดซ้ำได้ มีข้อ จำกัด อื่น ๆ และฉันอยากจะไปกับ DCEVM ในทุกกรณี
Ramon

1
"แพ็คเกจใดที่สามารถรีโหลดได้" - ถูกต้อง ปัญหาที่ระบุโดย @lbednaszynski ก็คือมันจะไม่โหลด JAR ที่ขึ้นต่อกัน นั่นเป็นสิ่งสำคัญสำหรับ Maven multi-module
Marcel Stör

โครงการนี้อยู่ในห้องใต้หลังคาสำหรับตอนนี้!
jpmottin

12

ฉันได้เขียนบทความเกี่ยวกับDCEVM : Spring-mvc + Velocity + DCEVM

ฉันคิดว่ามันคุ้มค่าเพราะสภาพแวดล้อมของฉันทำงานได้โดยไม่มีปัญหา


8
ลิงก์ใช้งานไม่ได้อีกต่อไป
pakman


9

ฉันทำงานเกี่ยวกับโครงการโอเพนซอร์ซที่ช่วยให้คุณสามารถแทนที่คลาสได้อย่างรวดเร็วและดีกว่าที่ hot swap อนุญาต: https://github.com/fakereplace/fakereplace

อาจหรืออาจไม่เหมาะกับคุณ แต่ความคิดเห็นใด ๆ ที่ได้รับการชื่นชม


4

คุณอาจต้องการดูนี้:

การสนับสนุน HotSwap: สถาปัตยกรรมเชิงวัตถุของ Java HotSpot VM เปิดใช้งานคุณลักษณะขั้นสูงเช่นการกำหนดคลาสแบบ on-the-fly หรือ "HotSwap" คุณสมบัตินี้ให้ความสามารถในการเปลี่ยนรหัสที่แก้ไขในแอปพลิเคชันที่ทำงานผ่าน API การดีบักเกอร์ hotswap เพิ่มฟังก์ชันการทำงานกับ Java Platform Debugger สถาปัตยกรรมที่ช่วยให้ระดับที่จะได้รับการปรับปรุงในระหว่างการดำเนินขณะที่ภายใต้การควบคุมของบั๊กที่ นอกจากนี้ยังอนุญาตให้ทำการดำเนินการทำโปรไฟล์โดย hotswapping ในเวอร์ชันของเมธอดที่แทรกโค้ดการทำโปรไฟล์

ในขณะนี้จะอนุญาตเฉพาะสำหรับวิธีการคอมไพล์เนื้อหาใหม่ที่จะปรับใช้ใหม่โดยไม่ต้องรีสตาร์ทแอปพลิเคชัน สิ่งที่คุณต้องทำคือเรียกใช้ด้วยดีบักเกอร์ ฉันลองใช้ Eclipse และใช้งานได้อย่างยอดเยี่ยม

นอกจากนี้ดังที่ Emmanuel Bourg ได้กล่าวไว้ในคำตอบของเขา ( JEP 159 ) หวังว่าจะได้รับการสนับสนุนสำหรับการเพิ่ม supertypes และการเพิ่มและกำจัดวิธีการและทุ่งนา

เอกสารอ้างอิง: Java Whitepaper 135217: ความน่าเชื่อถือความพร้อมใช้งานและความสามารถในการให้บริการ


-3

JRebel ฟรี อย่าซื้อมัน เลือกตัวเลือก "ฟรี" (ปุ่มตัวเลือก) ในหน้า "ซื้อ" จากนั้นเลือก "สังคม" หลังจากที่คุณสมัครคุณจะได้รับรหัสสิทธิ์ใช้งาน JRebel อย่างสมบูรณ์ จากนั้นคุณสามารถดาวน์โหลด JRebel หรือใช้รหัสใน IDEs ของคุณ การจับ (ใช่มีการจับ) คุณต้องอนุญาตให้พวกเขาโพสต์ในนามของคุณ (โฆษณา) เดือนละครั้งบนไทม์ไลน์ FB หรือบัญชี Twitter ของคุณ ฉันให้บัญชี Twitter ของพวกเขาไม่มีปัญหาใหญ่ฉันไม่เคยใช้มันและไม่มีใครรู้ว่าใช้มันจริงๆ ดังนั้นประหยัด $ 260


14
มีอีกหนึ่งการจับ JRebel Social นั้นฟรีสำหรับการใช้ที่ไม่ใช่เชิงพาณิชย์เท่านั้น ใช่แน่นอนเราจะไม่ตรวจสอบว่าคุณใช้งานจริงสำหรับโครงการส่วนบุคคลหรือที่ทำงานหรือไม่ แต่ผู้ตรวจสอบอาจไม่ชอบหากพวกเขาเห็นว่าคุณใช้ซอฟต์แวร์ผิดวัตถุประสงค์
Anton Arhipov

2
ฉันจะไม่แนะนำเป็นอย่างอื่น ในความเป็นจริง - เหตุผลเดียวที่ฉันนำเรื่องนี้มาเพราะไม่มีใบอนุญาต "บุคคล" อีกต่อไป ฉันสามารถทำให้ บริษัท ของฉันจ่ายค่าใบอนุญาตทำงานได้ จากนั้นฉันก็จ่ายค่าใบอนุญาตส่วนตัวเพื่อการใช้งานส่วนตัวนานกว่า 3 ปี แต่เมื่อราคาเมื่อทางเหนือของ $ 260 ต่อปีที่กลายเป็นทำไม่ได้ นี่เป็นทางออกที่ดีที่สุดสำหรับฉัน (และอื่น ๆ ) แต่ฉันจะต้องจ่ายให้มันต่อไปหากราคาสมเหตุสมผล
Michael Andrews

42
นอกจากนี้ความจริงที่ว่าทุกปีที่ฉันต้องการซื้อซอฟต์แวร์ที่ฉันซื้อไปแล้วนั้นเป็นเรื่องน่าหงุดหงิด ไม่มี บริษัท อื่นทำเช่นนี้ คุณมักจะซื้อซอฟต์แวร์ครั้งเดียว หากคุณเลือกที่จะอัปเกรด - คุณต้องซื้ออีกครั้งในราคาเต็ม (หรืออาจจะเป็นราคาอัพเกรดขึ้นอยู่กับ บริษัท ) แต่สิ่งที่คุณจ่ายไปคือคุณสมบัติใหม่ไม่ใช่คุณสมบัติเดียวกับที่คุณจ่ายไปแล้ว มันจะเป็นเช่น Apple หรือ Microsoft ปิดการใช้งานคอมพิวเตอร์ของคุณในแต่ละปีจนกว่าคุณจะจ่ายเงินสำหรับระบบปฏิบัติการอีกครั้ง อาหารสมอง.
Michael Andrews

2
JRebel Social ถูกแทนที่ด้วย myJRebel ฟรีสำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์คุณเพียงแค่ต้องอนุญาตการแบ่งปันสถิติ: my.jrebel.com
Steve Swinsburg

1
สรุปแล้ว JRebel ค่อนข้างถูกสำหรับลิขสิทธิ์ซอฟต์แวร์นักพัฒนาซอฟต์แวร์
Jared Hooper
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.