คำถามติดแท็ก java

Java เป็นภาษาการเขียนโปรแกรมเชิงวัตถุในระดับสูงที่พัฒนาโดย Sun Microsystems ปัจจุบัน Java เป็นเจ้าของโดย Oracle ซึ่งซื้อ Sun ในปี 2010

6
กำลังสร้างวัตถุที่คุณคิดว่าคุณต้องใช้ในการทดสอบครั้งแรกใน TDD
ฉันค่อนข้างใหม่สำหรับ TDD และฉันมีปัญหาในการสร้างการทดสอบครั้งแรกของฉันเมื่อมันมาก่อนรหัสการติดตั้งใด ๆ หากไม่มีกรอบในการติดตั้งโค้ดฉันมีอิสระที่จะเขียนการทดสอบครั้งแรกของฉันได้ แต่ฉันต้องการ แต่มันก็ดูจะเสียไปโดยวิธีการคิดแบบ Java / OO ของฉันเสมอ ตัวอย่างเช่นในGithub ConwaysGameOfLifeของฉันตัวอย่างการทดสอบครั้งแรกที่ฉันเขียน (rule1_zeroNeighbours) ฉันเริ่มต้นด้วยการสร้างวัตถุ GameOfLife ที่ยังไม่ได้ใช้งาน เรียกว่าชุดวิธีการที่ไม่มีอยู่วิธีการขั้นตอนที่ไม่มีอยู่วิธีรับที่ไม่มีอยู่แล้วใช้การยืนยัน การทดสอบพัฒนาขึ้นเมื่อฉันเขียนการทดสอบและปรับโครงสร้างใหม่ แต่เดิมแล้วมันมีลักษณะดังนี้: @Test public void rule1_zeroNeighbours() { GameOfLife gameOfLife = new GameOfLife(); gameOfLife.set(1, 1, true); gameOfLife.step(); assertEquals(false, gameOfLife.get(1, 1)); } สิ่งนี้รู้สึกแปลก ๆ เนื่องจากฉันถูกบังคับให้ออกแบบการนำไปใช้ตามวิธีที่ฉันตัดสินใจในช่วงแรกนี้เพื่อเขียนการทดสอบครั้งแรก ในวิธีที่คุณเข้าใจ TDD มันโอเคไหม? ฉันดูเหมือนจะปฏิบัติตามหลักการ TDD / XP ในการทดสอบและการใช้งานของฉันที่พัฒนาตลอดเวลาด้วยการปรับโครงสร้างใหม่และดังนั้นหากการออกแบบเริ่มต้นนี้ได้พิสูจน์แล้วว่าไร้ประโยชน์มันจะเปิดให้มีการเปลี่ยนแปลง แต่รู้สึกว่าฉันกำลังบังคับทิศทาง …

3
ฉันควรใช้ Java เวอร์ชันใดสำหรับแอปพลิเคชันเดสก์ท็อปเพื่อเข้าถึงผู้ใช้ส่วนใหญ่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันถูกต้องหรือไม่ที่จะสันนิษฐานว่าผู้ใช้ปลายทางส่วนใหญ่ใช้เวอร์ชันเก่ากว่า Java 8? เนื่องจากฉันไม่ต้องการบังคับให้คนอัปเกรดเพื่อใช้แอปพลิเคชันของฉันฉันควรวางแผนให้ใช้ Java 7 หรือ 6 ตั้งแต่เริ่มต้นถึงแม้ว่าจะหมายความว่าฉันไม่สามารถใช้ประโยชน์จากเวอร์ชั่นใหม่สำหรับตัวเองได้ ในฐานะนักพัฒนา

2
Java มี JVM, C คืออะไร?
ฉันรู้ว่า C มีคอมไพเลอร์ แต่สิ่งที่กำหนดประสิทธิภาพการดำเนินการ? ตัวอย่างเช่นในบล็อก if else จะเกิดอะไรขึ้นหากโค้ดเพิ่งมี ifs ทั้งหมดแทน ifes elses จะเป็นตัวกำหนดว่า ifs ทั้งหมดจะถูกรันอย่างไร ใน Java มันจะเป็น JVM แต่ใน C สิ่งที่คอมไพเลอร์ประมวลผลคืออะไร?
15 java  c 

2
ทำให้เชื่องคลาส 'ฟังก์ชันยูทิลิตี้'
ใน codebase Java ของเราฉันเห็นรูปแบบต่อไปนี้: /** This is a stateless utility class that groups useful foo-related operations, often with side effects. */ public class FooUtil { public int foo(...) {...} public void bar(...) {...} } /** This class does applied foo-related things. */ class FooSomething { int DoBusinessWithFoo(FooUtil fooUtil, ...) { …

4
มันมากเกินไปที่จะห่อคอลเลกชันในชั้นเรียนที่เรียบง่ายเท่านั้นเพื่อประโยชน์ในการอ่านที่ดีขึ้น?
ฉันมีแผนที่ดังต่อไปนี้: Map<Double, List<SoundEvent>> soundEventCells = new HashMap<Double, List<SoundEvent>>(); นี้HashMapแมdoubleค่า (ซึ่งเป็นคะแนนในเวลา) เพื่อที่สอดคล้องกันSoundEvent'มือถือ': แต่ละเซลล์สามารถมีจำนวนSoundEvents นั่นเป็นสาเหตุที่มันถูกนำมาใช้เป็นList<SoundEvent>เพราะนั่นคือสิ่งที่มันเป็น เพื่อประโยชน์ในการอ่านรหัสได้ดีขึ้นฉันจึงคิดถึงการใช้คลาสภายในแบบคงที่ที่ง่ายมากเช่น: private static class SoundEventCell { private List<SoundEvent> soundEvents = new ArrayList<SoundEvent>(); public void addEvent(SoundEvent event){ soundEvents.add(event); } public int getSize(){ return soundEvents.size(); } public SoundEvent getEvent(int index){ return soundEvents.get(index); } // .. remove() method unneeded } …

1
โครงสร้างแอ็พพลิเคชัน Java: แนวนอน vs แนวแยก
มีการถกเถียงกันเล็กน้อยเกี่ยวกับโครงสร้างโครงการเริ่มต้น (โดยใช้ Maven / Eclipse) สำหรับแอปพลิเคชัน Java ขนาดใหญ่ ตัวเลือกที่ 1: entities (i.e. the whole database using Hibernate classes-first) services (i.e. sets of read/write operations on the entities) app (perhaps split up more further down the line) ตัวเลือก 2: area1-entities area1-services area1-app area2-entities area2-services area2-app ... (where area1, area2 etc. are …

2
เอนทิตีเพื่อการใช้งาน DTO
รับความพยายามในการสร้างเว็บแอพพลิเคชั่นระดับพื้นฐานและได้อ่านข้อมูลที่ขัดแย้งกันทางออนไลน์ สิ่งที่ฉันพยายามคิดก็คือหากมีข้อได้เปรียบในการใช้วัตถุ DTO จาก DAO to เลเยอร์บริการของคุณผ่านการใช้ mapper บางประเภท โฟลว์พื้นฐานที่ฉันคาดการณ์ไว้มีดังนี้: UI Model / Form -> Controller คอนโทรลเลอร์แปลง Model เป็น Domain Object (Entity) วัตถุโดเมน -> ชั้นบริการ วัตถุโดเมน -> DAO DAO -> วัตถุโดเมน บริการ -> UI UI แปลงโดเมนเป็นโมเดล UI ถ้า DTO ถูกติดตาม DAO จะส่งกลับ DTO ไม่ใช่เอนทิตี หลังจากอ่านบางอย่างดูเหมือนว่า DTO ได้หมดอายุลงเล็กน้อยเนื่องจาก (อย่างน้อยใน Java) เอนทิตีได้กลายเป็นหมายเหตุประกอบ …
15 java  entity  jpa 

5
วิธีหลีกเลี่ยงปัญหาที่เหมาะสมสำหรับการสืบทอดหลาย ๆ อย่างใน Java (Android)
ฉันมีปัญหาด้านแนวคิดเกี่ยวกับการติดตั้งโค้ดอย่างเหมาะสมซึ่งดูเหมือนว่าต้องใช้การสืบทอดหลายแบบซึ่งจะไม่เป็นปัญหาในหลายภาษา OO แต่เนื่องจากโปรเจ็กต์สำหรับ Android ไม่มีสิ่งเช่นหลายextendsอย่าง ฉันมีพวงของกิจกรรมที่ได้มาจากฐานเรียนที่แตกต่างกันเช่นที่เรียบง่ายActivity, TabActivity, ListActivity, ExpandableListActivityฯลฯ นอกจากนี้ฉันมีเศษรหัสบางอย่างที่ฉันต้องไปยังสถานที่ลงในonStart, onStop,onSaveInstanceState , onRestoreInstanceStateและอื่น ๆ ที่จัดการเหตุการณ์มาตรฐานในทุกกิจกรรม ถ้าฉันมีคลาสฐานเดียวสำหรับทุกกิจกรรมฉันจะวางโค้ดลงในคลาสที่ได้รับมาจากระดับกลางพิเศษจากนั้นสร้างกิจกรรมทั้งหมดที่ขยายออกมา น่าเสียดายที่นี่ไม่ใช่กรณีเนื่องจากมีหลายคลาสพื้นฐาน แต่การวางส่วนของรหัสเดียวกันลงในคลาสกลางหลาย ๆ คลาสนั้นไม่ใช่วิธีที่จะทำได้ อีกวิธีหนึ่งคือการสร้างวัตถุผู้ช่วยและมอบหมายการโทรเหตุการณ์ทั้งหมดที่กล่าวไว้ข้างต้นให้กับผู้ช่วย แต่สิ่งนี้ต้องการวัตถุผู้ช่วยที่จะรวมและตัวจัดการทั้งหมดจะถูกกำหนดใหม่ในชั้นกลางทั้งหมด ดังนั้นจึงไม่มีความแตกต่างกับวิธีแรกที่นี่ - ยังคงมีการทำสำเนารหัสจำนวนมาก หากมีสถานการณ์คล้ายกันเกิดขึ้นใน Windows ฉันต้องการคลาสย่อยฐานรอง (สิ่งที่ "สอดคล้อง" กับ Activityคลาสใน Android) และดักจับข้อความที่เหมาะสมที่นั่น (ในที่เดียว) Java / Android สามารถทำอะไรได้บ้าง? ฉันรู้ว่ามีเครื่องมือที่น่าสนใจเช่นเครื่องมือJava ( พร้อมตัวอย่างจริง ) แต่ฉันไม่ใช่กูรู Java และไม่แน่ใจว่ามันคุ้มค่าที่จะลองในกรณีเฉพาะนี้หรือไม่ หากฉันพลาดวิธีแก้ปัญหาที่เหมาะสมอื่น ๆ โปรดพูดถึงพวกเขา UPDATE: …

5
วิธีที่จะคืนค่าที่ส่งคืนหลายวิธีจากวิธีการ: ใส่วิธีการภายในชั้นเรียนที่เป็นตัวแทนของค่าตอบแทน มันเป็นการออกแบบที่ดีหรือไม่?
ฉันต้องการคืนค่า 2 ค่าจากวิธีหนึ่ง แนวทางของฉันมีดังนี้: สร้างคลาสภายในที่มี 2 ฟิลด์ที่จะใช้เพื่อรักษาค่าเหล่านั้น 2 ใส่วิธีการภายในชั้นเรียนนั้น ยกตัวอย่างคลาสและเรียกใช้เมธอด สิ่งเดียวที่จะมีการเปลี่ยนแปลงในวิธีการคือในที่สุดมันจะกำหนดค่าเหล่านั้น 2 ให้กับเขตข้อมูลของอินสแตนซ์ จากนั้นฉันสามารถระบุค่าเหล่านั้นได้โดยอ้างอิงไปยังฟิลด์ของวัตถุนั้น มันเป็นการออกแบบที่ดีและทำไม?

1
Java Cryptography Extension
ฉันได้รับแจ้งว่าเพื่อรองรับการเข้ารหัส AES256 ภายในแอป Java ของฉันที่ฉันต้องการ JCE พร้อมไฟล์นโยบายการ จำกัด เขตอำนาจที่ไม่ จำกัด ฉันดาวน์โหลดสิ่งนี้จาก Oracle และคลายซิปและฉันเห็นเพียง 2 JARs: local_policy.jar; และ US_export_polic.jar ฉันแค่ต้องการยืนยันว่าฉันจะไม่พลาดอะไรที่นี่! ความเข้าใจของฉัน (หลังจากอ่านREADME.txt) คือฉันเพิ่งวางทั้งสองลงใน<JAVA_HOME>/lib/security/ไดเรกทอรีของฉันและพวกเขาควรจะติดตั้ง ด้วยชื่อของ JARs เหล่านี้ฉันต้องสมมติว่าไม่ใช่ Java Crypto API ที่ไม่สามารถจัดการ AES256 ได้ แต่จริงๆแล้วมันเป็นปัญหาทางกฎหมาย และโดยที่ JAR สองตัวนี้บอก JRE ว่า " ใช่เป็นที่ยอมรับตามกฎหมายในการใช้ crypto ระดับนี้ (AES256) " ฉันถูกต้องหรือผิดฐาน?

3
วิธีการออกแบบเว็บเซอร์วิสที่ปรับขนาดได้สูงใน Java?
ฉันกำลังสร้างบริการบนเว็บบางอย่างที่จะมีผู้ใช้ 2,000 คนพร้อมกัน บริการดังกล่าวให้บริการฟรีและคาดว่าจะได้รับฐานผู้ใช้จำนวนมาก ในอนาคตอาจต้องมีผู้ใช้มากถึง 50,000 คน มีคำถามอีกสองสามข้อที่แก้ไขปัญหาเช่น - /programming/2567254/building-highly-scalable-web-services อย่างไรก็ตามความต้องการของฉันแตกต่างจากคำถามข้างต้น ตัวอย่างเช่น - แอปพลิเคชันของฉันไม่มีส่วนต่อประสานผู้ใช้ดังนั้นรูปภาพ, CSS, javascript จึงไม่เป็นปัญหา มันมีอยู่ใน Java ดังนั้นคำแนะนำเช่นการใช้ HipHop ในการแปล PHP เป็นโค้ดเนทีฟนั้นไร้ประโยชน์ ดังนั้นฉันจึงตัดสินใจถามคำถามแยกต่างหาก นี่คือการตั้งค่าโครงการของฉัน - วางตัวบริการบนเว็บโดยใช้ Apache CXF Hibernate 3.0 (ด้วยการปรับแต่งที่เกี่ยวข้องเช่นการโหลดแบบขี้เกียจและ HQL แบบกำหนดเองสำหรับปรับแต่ง) Tomcat 6.0 MySql 5.5 อะไรคือวิธีปฏิบัติที่ดีที่สุดในการปฏิบัติตามเพื่อให้แอปพลิเคชันที่ใช้ Java สามารถปรับขนาดได้

4
เข้าใกล้ Java / JVM internals [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันตั้งโปรแกรมใน Java เป็นเวลาประมาณ 8 ปีและฉันรู้ภาษาค่อนข้างดีในฐานะนักพัฒนา แต่เป้าหมายของฉันคือการเพิ่มความรู้เกี่ยวกับ internals ให้ลึกซึ้งยิ่งขึ้น ฉันเรียนหลักสูตรระดับปริญญาตรีในสาขาการออกแบบ PL แต่พวกเขาเป็นภาพรวมทางวิชาการที่กว้างมาก (ใน Scheme, IIRC) มีคนแนะนำเส้นทางให้เริ่มเจาะลึกรายละเอียดได้ไหม โดยเฉพาะมีหัวข้อพิเศษ (เช่นการเก็บขยะ) ที่อาจเข้าถึงได้ง่ายกว่าหรือเป็นจุดเริ่มต้นที่ดี มีหนังสือระดับสูงที่ดีเกี่ยวกับ internals ของ JVM และการออกแบบภาษาการเขียนโปรแกรม Java หรือไม่? แนวทางปัจจุบันของฉันจะเริ่มต้นด้วยข้อมูลจำเพาะ JVMและการวิจัยตามต้องการ
15 java  books  jvm 

2
จะเกิดอะไรขึ้นถ้าเราทำให้ซีเรียลไลซ์และดีซีเรียลไลซ์สองวัตถุที่อ้างอิงถึงกันและกัน?
เพื่อให้ชัดเจนยิ่งขึ้นนี่เป็นตัวอย่างด่วน: class A implements Serializable { public B b; } class B implements Serializable { public A a; } A a = new A(); B b = new B(); a.b = b; b.a = a; แล้วจะเกิดอะไรขึ้นถ้าเราทำให้วัตถุ a และ b เป็นอนุกรมเป็นไฟล์และทำการดีซีเรียลไลซ์ออกจากไฟล์นั้น? ฉันคิดว่าเราได้วัตถุ 4 ชิ้นชิ้นละ 2 ชิ้น วัตถุที่เหมือนกัน แต่มีอินสแตนซ์ต่างกัน แต่ฉันไม่แน่ใจว่ามีอะไรอีกหรือมันถูกหรือผิด หากเทคโนโลยีใดจำเป็นต้องตอบโปรดคิดตาม Java …

2
วิธีแก้ปัญหา / เปลี่ยนรหัส Java ขณะที่โปรแกรมกำลังทำงาน
ฉันเพิ่งเห็นวิดีโอที่แสดงให้เห็นว่า Notch (จากชื่อเสียงของ Minecraft) กำลังดีบั๊กและเปลี่ยนแปลง Minecraft ในขณะที่มันกำลังทำงานอยู่ เขาหยุดเกมชั่วคราวเปลี่ยนบางอย่างในรหัสแล้วหยุดเกมที่การเปลี่ยนแปลงมีผลทันทีโดยไม่จำเป็นต้องเริ่มโปรแกรมใหม่ มันทำงานอย่างไร เทคนิคแบบไหนที่ใช้เพื่อให้บรรลุสิ่งนี้
15 java  debugging 

6
ข้ามไปยัง Android หรือเรียนรู้พื้นฐาน Java ก่อนหรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันค่อนข้างเชี่ยวชาญใน C และรู้ C ++ บางอย่าง แต่ไม่เคยสัมผัส Java เมื่อเร็ว ๆ นี้ฉันมีไอเดียสำหรับแอพที่ฉันคิดว่ามีศักยภาพและฉันต้องการพัฒนามัน ฉันวางแผนที่จะไป Android ก่อนเพราะมันไม่จำเป็นต้องมี mac / iPhone ดังนั้นคำถามของฉันคือ: ฉันสามารถตรงไปที่การเรียนรู้การพัฒนา Android หยิบไวยากรณ์ Java ตามที่ฉันต้องการและมัน (หลังจากทั้งหมดฉันไม่คิดว่ามันจะแตกต่างจาก C / C ++) หรือฉันควรใช้เวลาสองสามชั่วโมง สัปดาห์เพื่อเรียนรู้พื้นฐานของ Java ก่อนแล้วเริ่มด้วยการพัฒนา Android?
15 java  android 

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