ความแตกต่างระหว่าง Framework กับ Library กับ IDE เทียบกับ API กับ SDK กับ Toolkits? [ปิด]


144

ฉันต้องการตัวอย่าง ฉันสับสนอยู่เสมอดังนั้นด้วยตัวอย่างบางอย่างฉันอาจจะเข้าใจได้ดีขึ้น

นอกจากนี้: Eclipse เป็น API หรือ IDE หรือไม่


1
eclipse เป็น IDE
Thielicious

คำตอบ:


294

IDEเป็นสภาพแวดล้อมการพัฒนาแบบบูรณาการ - โปรแกรมแก้ไขข้อความ suped ขึ้นกับการสนับสนุนเพิ่มเติมสำหรับการพัฒนา (เช่นนักออกแบบรูปแบบบรรณาธิการทรัพยากร ฯลฯ ), การรวบรวมและการแก้จุดบกพร่องการใช้งาน เช่น Eclipse, Visual Studio

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

API (อินเตอร์เฟซการเขียนโปรแกรมประยุกต์) เป็นคำที่หมายถึงฟังก์ชั่น / วิธีการในห้องสมุดที่คุณสามารถโทรไปขอให้ทำสิ่งสำหรับคุณ - อินเตอร์เฟซที่ห้องสมุด

SDK (ชุดพัฒนาซอฟต์แวร์) เป็นห้องสมุดหรือกลุ่มของห้องสมุด (มักจะมีการใช้งานเครื่องมือพิเศษไฟล์ข้อมูลและรหัสตัวอย่าง) ที่ช่วยคุณในการพัฒนารหัสที่ใช้ระบบ (เช่นรหัสส่วนขยายสำหรับการใช้คุณสมบัติของระบบปฏิบัติการ ( Windows SDK) การวาดภาพกราฟิก 3D ผ่านระบบเฉพาะ (DirectX SDK) การเขียนโปรแกรมเสริมเพื่อขยายแอปพลิเคชันอื่น (Office SDK) หรือการเขียนรหัสเพื่อให้อุปกรณ์เช่น Arduino หรือโทรศัพท์มือถือทำในสิ่งที่คุณต้องการ) SDK มักจะยังคงมีโฟกัสเดียว

เครื่องมือเป็นเหมือน SDK - มันเป็นกลุ่มของเครื่องมือ (และมักรหัสห้องสมุด) ที่คุณสามารถใช้เพื่อให้ง่ายต่อการเข้าถึงอุปกรณ์หรือระบบ ... แม้ว่าอาจจะมีความสำคัญมากขึ้นในการจัดหาเครื่องมือและการใช้งานมากกว่ารหัสห้องสมุดเพียง .

กรอบเป็นห้องสมุดขนาดใหญ่หรือกลุ่มของห้องสมุดที่ให้บริการจำนวนมาก (มากกว่าอาจจะเป็นความสามารถในการเพ่งความสนใจไปเพียงหนึ่งห้องสมุดมากที่สุด / SDKs ทำ) ตัวอย่างเช่น. NET ได้จัดทำเฟรมเวิร์กแอปพลิเคชัน - ทำให้การใช้บริการที่แตกต่างกันส่วนใหญ่ (ถ้าไม่ทั้งหมด) ที่คุณต้องการ (เช่น Windows, กราฟิก, การพิมพ์, การสื่อสาร, ฯลฯ ) เพื่อเขียนแอปพลิเคชันต่างๆ "ห้องสมุด" ให้การสนับสนุนทุกสิ่งที่คุณต้องทำ บ่อยครั้งที่เฟรมเวิร์กส่งมอบฐานที่สมบูรณ์ซึ่งคุณสร้างรหัสของคุณเองแทนที่จะสร้างแอปพลิเคชันที่ใช้รหัสไลบรารีเพื่อทำงานส่วนต่าง ๆ ของมัน

แน่นอนมีตัวอย่างมากมายในไวด์ ธ ที่ไม่ตรงกับคำอธิบายเหล่านี้อย่างแน่นอน


3
คุณสามารถพูดได้ว่า SDK ห้องสมุดหรือกรอบงานประกอบด้วย API
Bastien Vandamme

6
SDK เป็นการใช้งานเฉพาะของลูกค้าเพื่อลดความสิ้นเปลืองของ API เช่น javascript SDK สำหรับ Facebook API บ่อยครั้งที่คุณจะเห็นหลายภาษาแสดงอยู่ในส่วน SDK ของเอกสาร API เช่น twilio API มี python, ruby, C # และ Java sdk สำหรับ API เพียงเพื่อสร้างความสับสนให้กับสิ่งต่าง ๆ อีกเล็กน้อยพวกเขาเรียกมันว่า API Libraries และ SDK และฉันได้ยินมาว่าคำทั้งสองนี้ใช้แทนกันได้
Rob

97

การเปรียบเทียบรถยนต์

ป้อนคำอธิบายรูปภาพที่นี่

IDE: MS Office ของการเขียนโปรแกรม เป็นที่ที่คุณพิมพ์รหัสของคุณพร้อมคุณสมบัติเพิ่มเติมบางอย่างที่จะทำให้คุณเป็นโปรแกรมเมอร์ที่มีความสุขขึ้น (เช่นEclipse, Netbeans ) ตัวถังรถยนต์: มันคือสิ่งที่คุณสัมผัสดูและทำงานจริง ๆ

Library:ไลบรารีคือชุดของฟังก์ชั่นซึ่งมักจะจัดกลุ่มเป็นไฟล์โปรแกรมหลายไฟล์ แต่บรรจุลงในไฟล์เก็บถาวรไฟล์เดียว มันมีโปรแกรมที่สร้างโดยคนอื่น ๆ ดังนั้นคุณไม่จำเป็นต้องบูรณาการล้อ (เช่นjunit.jar, log4j.jar ) โดยทั่วไปแล้วไลบรารีมีบทบาทสำคัญ แต่ทำงานทั้งหมดเบื้องหลังมันไม่ได้มี GUI เครื่องยนต์ของรถยนต์

API:เอกสารของผู้เผยแพร่ห้องสมุด นี่คือวิธีที่คุณควรใช้ห้องสมุดของฉัน (เช่นlog4j API , junit API ) คู่มือผู้ใช้ของรถยนต์ - ใช่รถยนต์ก็มีมาด้วยเช่นกัน!


ชุด

ชุดคืออะไร เป็นการรวบรวมรายการที่เกี่ยวข้องมากมายที่ทำงานร่วมกันเพื่อให้บริการที่เฉพาะเจาะจง เมื่อมีคนบอกว่าชุดยาคุณจะได้รับทุกสิ่งที่คุณต้องการสำหรับกรณีฉุกเฉิน: พลาสเตอร์ยาแอสไพรินผ้ากอซและน้ำยาฆ่าเชื้อ ฯลฯ

ป้อนคำอธิบายรูปภาพที่นี่

SDK : โดนัลด์เสวยสุข คุณมีทุกสิ่งที่คุณต้องการ (และไม่ต้องการ) บรรจุอย่างประณีต: อาหารจานหลักของหวานเครื่องดื่มและของเล่นโบนัส SDK คือส่วนประกอบซอฟต์แวร์ที่แตกต่างกันที่รวมอยู่ในแพ็คเกจเช่นว่า "พร้อมสำหรับการดำเนินการ" ทันที มักจะมีหลายไลบรารีและสามารถแต่อาจไม่จำเป็นต้องรวมถึงปลั๊กอินเอกสารประกอบ API แม้แต่ IDE เอง (เช่นชุดพัฒนา iOS )

ชุดเครื่องมือ : GUI GUI GUI เมื่อคุณได้ยิน 'ชุดเครื่องมือ' ในบริบทการเขียนโปรแกรมมักจะอ้างถึงชุดของไลบรารีที่มีไว้สำหรับการพัฒนา GUI เนื่องจากชุดเครื่องมือเป็น UI เป็นศูนย์กลางพวกเขามักจะมาพร้อมกับปลั๊กอิน (หรือ IDE แบบสแตนด์อโลน) ที่ให้บริการยูทิลิตี้ภาพวาดบนหน้าจอ (เช่นGWT )

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


41
API ไม่ใช่แค่เอกสารประกอบ จริงๆแล้วมันไม่ใช่เอกสารเลย ฉันเข้าใจความคล้ายคลึงของคุณ แต่เอกสารหรือเอกสาร API เป็นคู่มือรถของคุณและ API นั้นเป็นบอร์ดและปุ่มในรถของคุณมากกว่า
Bastien Vandamme

1
คุณสามารถสร้างความแตกต่างระหว่าง GUI และ API GUI (Graphical User Interface) เป็นอินเทอร์เฟซสำหรับผู้ใช้ที่ไม่ใช่มืออาชีพขั้นสุดท้าย API (Application Programming Interface) เป็นอินเตอร์เฟสสำหรับโปรแกรมอื่น ๆ เมื่อคุณพัฒนาและแอปพลิเคชันคุณสามารถสร้าง GUI หรือ API หรือทั้งสองอย่าง คุณยังสามารถสร้างอินเตอร์เฟสประเภทอื่นได้
Bastien Vandamme

มี API อยู่เบื้องหลัง GUI เสมอ GUIs ทำให้การใช้งานง่ายขึ้นเท่านั้น ในด้านไอทีมันมีเหตุผลที่ไม่เป็นมืออาชีพมากกว่าเช่นอินเตอร์เฟสกราฟิกแทนที่จะเป็นรหัส ยังเกี่ยวกับตรรกะรถของคุณ: คุณอาจไม่สามารถขับรถด้วยตัวเองได้คุณต้องเรียนรู้และรู้วิธีขับรถ (พิจารณาบทเรียนการขับขี่เป็นบทช่วยสอนหรือเอกสารประกอบ) หากคุณไม่ต้องการประสบความสำเร็จคุณอาจต้องการขึ้นรถบัสหรือแท็กซี่เนื่องจากไม่มีทักษะการขับขี่ที่จำเป็น (ในกรณีนี้ไม่มีทักษะการเขียนโปรแกรม) - ดังนั้นฉันจะพิจารณาวิธีการขนส่งสาธารณะเป็น GUI ฟังดูตลก แต่จริงนะ
Thielicious

ฉันไม่เห็นด้วยกับ "[ไลบรารี่] ไม่มี GUI" ในโลก JavaScript มันเป็นเรื่องธรรมดามากที่ห้องสมุดจะมี GUI
user1505520

5

พิจารณาการพัฒนา Android:

IDE: Eclipse และอื่น ๆ

Library: android.app.Activity library (คลาสพร้อมรหัสทั้งหมด)

API: ส่วนต่อประสานฟังก์ชั่นทั้งหมดที่เราเรียก

SDK: Android SDK มอบไลบรารี API และเครื่องมือสำหรับนักพัฒนาที่จำเป็นในการสร้างทดสอบและดีบักแอปสำหรับ Android (---- tools - DDMS, Emulator ---- แพลตฟอร์ม - เวอร์ชั่น Android OS, ---- platform- เครื่องมือ - ADB, ---- เอกสาร API)

ToolKit: อาจเป็น ADT Bundle

Framework: ไลบรารีขนาดใหญ่ แต่เน้นสถาปัตยกรรมมากกว่า


3

กล่าวอีกนัยหนึ่ง ...

IDE แม้แต่ Notepad ของคุณก็เป็น IDE ซอฟต์แวร์ที่คุณเขียน / คอมไพล์โค้ดด้วย IDE ทุกตัว

ไลบรารี พวงของโค้ดที่ทำให้ฟังก์ชั่น / วิธีการใช้งานง่ายขึ้น

API อินเทอร์เฟซการเขียนโปรแกรมสำหรับฟังก์ชั่น / การกำหนดค่าที่คุณทำงานด้วยการใช้งานมักถูกทำเป็นเอกสาร

SDK พิเศษและ / หรือเพื่อการพัฒนา / ทดสอบ

ToolKit แอพเล็ก ๆ สำหรับการใช้งานอย่างรวดเร็วมักจะเป็น GUI

แอพGUIพร้อมอินเทอร์เฟซแบบกราฟิกไม่จำเป็นต้องมีความรู้ในการเขียนโปรแกรมซึ่งแตกต่างจาก API

Framework Bunch ของ APIs / Library / Snippets ขนาดใหญ่ที่ห่อไว้ในเนมสเปซ / หรือห่อหุ้มจากขอบเขตด้านนอกสำหรับการจัดการขนาดกะทัดรัดโดยไม่ขัดแย้งกับรหัสอื่น

MVC รูปแบบการออกแบบที่แยกออกมาในรูปแบบมุมมองและตัวควบคุมสำหรับแอปพลิเคชันขนาดใหญ่ พวกเขาไม่ได้ขึ้นอยู่กับแต่ละอื่น ๆ และสามารถเปลี่ยนแปลง / ปรับปรุง / แทนที่โดยไม่ต้องดูแลรหัสอื่น ๆ

ตัวอย่าง:

รถยนต์ (รุ่น)
วัตถุที่นำเสนอ
ตัวอย่างในไอที: รูปแบบ HTML


กล้อง (มุมมอง)
สิ่งที่สามารถมองเห็นวัตถุ (รถยนต์)
ตัวอย่างในไอที: เบราว์เซอร์ที่แสดงผลเว็บไซต์ด้วยแบบฟอร์ม


คนขับ (ผู้ควบคุม)
คนที่ขับรถคันนั้น
ตัวอย่างในไอที: ฟังก์ชั่นที่จัดการกับข้อมูลแบบฟอร์มที่ถูกส่ง

ตัวอย่าง โค้ดขนาดเล็กเพียงไม่กี่บรรทัดอาจไม่สมบูรณ์แม้กระทั่งคุ้มค่าสำหรับการแบ่งปันอย่างรวดเร็ว

ฟังก์ชั่นพิเศษสำหรับปลั๊กอินสำหรับ frameworks / APIs / libraries ที่ระบุเท่านั้น

ส่วนเสริม โมดูลหรือบริการเพิ่มเติมสำหรับ GUI เฉพาะ


2

SDK แสดงถึงชุดพัฒนาซอฟต์แวร์และ IDE แทนสภาพแวดล้อมการพัฒนาแบบรวม IDE คือซอฟต์แวร์หรือโปรแกรมที่ใช้ในการเขียนรวบรวมเรียกใช้และดีบักเช่น Xcode SDK เป็นเอ็นจิ้นพื้นฐานของ IDE รวมถึงไลบรารีทั้งหมดของแพลตฟอร์มที่แอพจำเป็นต้องเข้าถึง มันเป็นพื้นฐานมากกว่า IDE เพราะปกติแล้วจะไม่มีเครื่องมือกราฟิก

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