สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Web Programming

ASP.NET ต่างกับ ASP อย่างไร JavaScript - HelloWorld npm - Intro AngularJS - HelloWorld VueJS - HelloWorld webpack - Intro ASP.NET - HelloWorld Flask - HelloWorld Web Server คืออะไร API คืออะไร Maven - HelloWorld Nancy - HelloWorld Protocol คืออะไร วิธีติดตั้ง Web Server บน Ubuntu วิธีติดตั้ง PrestaShop with PHP 8 (ใช้ Amazon Lightsail) วิธีติดตั้ง XAMPP บน Ubuntu 22.04 วิธีติดตั้ง WordPress บน XAMPP บน Ubuntu 22.04 React - Simple Web App - People Counter React - Simple Web App - People Counter 2 React - Web App - Dictionary React - Web App - Multiple Pages React - Web App - Multiple Pages with APIs React - Web App - Calculator React - Web App - Smart Parking วิธีสร้าง AWS EC2 instance สร้าง Web Application โดยใช้ Django และ Deploy บน AWS EC2 React - Create and Run React Application React - Web App - SpO2 Tracker วิธีติดตั้งและใช้งาน CKEditor 5 Introduction to JSON JSON Full Form: JavaScript Object Notation History of JSON JSON vs XML Structure of JSON JSON Data Types JSON Objects Explained JSON Arrays Explained Key-Value Pairs in JSON JSON String Data Type JSON Number Data Type JSON Boolean Data Type JSON Null Data Type Nested JSON Objects JSON in APIs JSON Schema Overview How to Write JSON JSON File Extensions (.json) JSON Syntax Rules JSON Parsing in JavaScript JSON Stringify in JavaScript How to Use JSON.parse() How to Use JSON.stringify() Escaping Characters in JSON JSON Comments (and why they are not allowed) JSON in Web Development Sending JSON Data with HTTP Requests Receiving JSON Responses in APIs REST APIs and JSON JSON in AJAX Requests Working with JSON in Node.js How to Read a JSON File Saving Data in JSON Format How to Validate JSON JSONLint for Validation JSON Pretty Print JSON Minification JSON vs YAML JSON and JavaScript Compatibility JSON and Python Integration Working with JSON in Python (json module) JSON in Java (Jackson and GSON) JSON in C++ (RapidJSON and nlohmann/json) JSON in C# (Json.NET) JSON in PHP (json_encode and json_decode) How to Fetch JSON Data from APIs Fetching JSON in Python (requests module) Fetching JSON in JavaScript (fetch API) Fetching JSON in jQuery JSON Serialization JSON Deserialization JSON Data Interchange Common Errors in JSON Syntax Handling Large JSON Files Streaming JSON Data JSON Pagination Techniques JSON as a Configuration Format JSON in Cloud Storage JSON and MongoDB BSON vs JSON in MongoDB JSON Web Tokens (JWT) Security Considerations with JSON Cross-Origin Resource Sharing (CORS) and JSON JSON Schema Validation Creating a JSON Schema Required Fields in JSON Schema JSON Schema Property Types JSON Schema Examples Benefits of JSON Schema JSONPath: Querying JSON Data JSON Data Transformation Comparing Two JSON Objects Sorting JSON Data Flattening JSON Structures JSON Merge Techniques JSON in NoSQL Databases JSON in Relational Databases Storing JSON in MySQL JSON Functions in MySQL JSON Functions in PostgreSQL JSON Functions in SQL Server JSON and Elasticsearch Advantages of Using JSON Limitations of JSON JSON and GraphQL JSONP (JSON with Padding) JSON and Local Storage in Browsers JSON and Cookies JSON and Session Storage Importing and Exporting JSON Nested vs Flattened JSON Structures JSON Best Practices Debugging JSON Errors JSON Performance Optimization Real-Time Data with JSON Microservices and JSON JSON Versioning JSON in IoT Applications JSON for Data Exchange in Mobile Apps The Future of JSON Introduction to XML XML Full Form: eXtensible Markup Language History of XML XML vs HTML XML vs JSON Structure of XML XML Syntax Rules XML Elements Explained XML Attributes Explained XML Tags XML Prolog XML Declaration XML Namespaces XML Data Types XML Comments XML Empty Elements XML Well-Formed Documents XML Valid Documents XML DTD (Document Type Definition) XML Schema Definition (XSD) XML vs XSD XML vs DTD XML Namespaces Best Practices XML Parsers XML DOM (Document Object Model) SAX Parser in XML XML Parsing in Java XML Parsing in Python XML Parsing in C# XML Parsing in JavaScript XML with PHP How to Read XML Files How to Write XML Files How to Validate XML XML Formatting and Pretty Print XML Minification XML Tree Structure XML as a Data Interchange Format XML in Web Services SOAP and XML REST vs SOAP (XML in APIs) XML in AJAX XMLHTTPRequest in JavaScript XML in Mobile Applications How to Transform XML with XSLT XSLT for Formatting XML XPath Overview XPath Syntax XPath Expressions and Queries XML Query Languages XQuery Overview XLink for XML Linking XPointer for XML Fragment Identification XML for Configuration Files Storing XML in Databases XML in MySQL XML in PostgreSQL XML in SQL Server XML in Oracle Database XML Indexing XML Data Modeling XML and SOAP Faults XML Encryption XML Digital Signatures Security Best Practices for XML XML Schema Elements XML Schema Attributes XML Schema Validation XML Schema Restrictions and Extensions XML Schema Choice and Sequence Benefits of Using XML Limitations of XML XML in Big Data XML and NoSQL Databases XML for IoT Applications XML in E-commerce Systems XML for Document Storage XML for Multimedia Content XML in Content Management Systems XML and Microservices XML and Cloud Computing XML for RSS Feeds Atom and XML Feeds XML in Office Document Formats (DOCX, XLSX) XML and SVG (Scalable Vector Graphics) XML for Vector Graphics XML Compression Techniques XML with WebSockets XML in Real-Time Applications JSON vs XML Performance XML and CORS (Cross-Origin Resource Sharing) XML for API Design Common XML Parsing Errors Debugging XML Converting XML to JSON Converting JSON to XML XML Best Practices XML Versioning XML and GraphQL The Future of XML

A23_Maven_HelloWorld

ในบทความก่อนหน้านี้ (A22_Android02_Gradle) เราได้ทำความรู้จัก Gradle ซึ่งเป็น build tool ตัวหนึ่งไปแล้ว ในบทความนี้เราพาท่านผู้อ่านไปรู้จักกับ Maven ซึ่งถ้านับว่าเป็นพ่อของ Gradle ก็คงไม่ผิดนักกันครับ

Maven คืออะไร

Maven คือ build tool สำหรับโปรเจกต์ภาษาจาวาที่ช่วยจัดการขั้นตอนต่างๆในการ build ให้เป็นไปได้ง่ายขึ้นโดยมันจะดาวน์โหลด Library และ Maven Plug-in ที่ต้องใช้ในโปรเจกต์จากที่ต่างๆให้ นอกจากนี้ Maven ยังสามารถใช้ build โปรเจกต์ภาษา C#, Ruby, Scala ฯลฯ ได้อีกด้วย แต่เราจะไม่พูดถึงในที่นี้ เป้าหมายของ Maven[1] คือ

  • Making the build process easy
  • Providing a uniform build system
  • Providing quality project information
  • Providing guidelines for best practices development
  • Allowing transparent migration to new features

ประวัติ Maven

Maven เป็นภาษา Yiddish แปลว่า accumulator of knowledge เป็น open-source build tool พัฒนาโดย Apache Software Foundation 

Maven เกิดมาในโปรเจกต์ Jakarta Alexandria ก่อนจะย้ายมาโปรเจกต์ Turbine ซึ่งที่โปรเจกต์นี้แหละครับที่มันได้ถูกทดลองใช้จริง ในตอนนั้นผู้พัฒนาโปรเจกต์ Turbine กำลังปวดหัวกับการต้อง build แยกแต่ละ layer ทั้งๆที่โดยพื้นฐานแล้วมันเหมือนกัน และการใช้ Apache Ant ก็ไม่ช่วยให้ชีวิตดีขึ้น Maven จึงถูกใช้เพื่อช่วยให้ขั้นตอนการ build ของโปรเจกต์ Jakarta Turbine สามารถทำได้ง่ายขึ้นครับ

โดย Maven จะใช้ XML form สำหรับเขียนไฟล์ configuration ซึ่งเรียกว่า Project Object Model หรือ POM (pom.xml) ในไฟล์นี้จะมีข้อมูลของ dependencies ต่างๆในโปรเจกต์, ลำดับการ build, directory และ plug-ins ที่ต้องใช้ ดังนั้นไฟล์นี้จึงถือเป็นแกนหลักของ Maven เลยครับ Maven ออกมาครั้งแรกในปี 2004 เวอร์ชันที่เสถียรล่าสุดคือเวอร์ชัน 3.6.1 ออกในปี 2019

Project Hello world

ในบทความนี้เราจะมาทดลองใช้ Maven สร้างโปรเจกต์ Hello World กัน 

ต้องขอชี้แจงก่อนว่าผมคิดว่าผู้อ่านที่จะใช้ Maven น่าจะมีพื้นฐานเขียนโปรแกรมกันอยู่แล้ว ดังนั้นผมจะขอไม่อธิบายเรื่องการติดตั้งโปรแกรมต่างๆหรือเรื่องอะไรที่เป็นความรู้พื้นฐานนะครับ

1. เปิด Command Prompt (ถ้าใครไม่รู้จักก็ขอให้ย้อนไปอ่านบทความ A14 Windows CommandLine) จากนั้นพิมพ์คำสั่งต่อไปนี้เพื่อตรวจสอบว่าเครื่องของเราลง Java เรียบร้อยแล้วหรือไม่

java -version

ถ้าลงเรียบร้อยแล้วจะขึ้นข้อความบอกเวอร์ชันที่ลง แต่ถ้าไม่ก็ให้ทำการติดตั้งเสียก่อนโดยดาวน์โหลดได้จาก https://www.oracle.com/technetwork/java/javase/downloads/index.html หรืออาจจะลง OpenJDK ก็ได้ และเมื่อติดตั้งเสร็จแล้วอย่าลืมเพิ่ม PATH ใน Environment variables ด้วยนะครับ เสร็จแล้วให้ปิดหน้าต่าง Command Prompt นี้ไปเลย

2. ดาวน์โหลด Maven โดยเข้าไปที่ https://maven.apache.org/download.cgi แล้วเลือกดาวน์โหลดไฟล์ที่ต้องการ สำหรับ Windows ให้โหลดตัว apache-maven-3.6.1-bin.zip

3. เมื่อดาวน์โหลดเสร็จแล้วจะได้ไฟล์ .zip มา ให้แตกไฟล์แล้วเอาโฟลเดอร์ชื่อ apache-maven-3.6.1 ที่ได้ออกมาไปใส่ใน C:\Program Files

4. ถ้าเข้าไปดูในโฟลเดอร์ C:\Program Files\apache-maven-3.6.1 จะเห็นว่ามีโฟลเดอร์ชื่อ bin อยู่

5. ให้ทำการเพิ่ม PATH ของโฟลเดอร์ชื่อ bin ในขั้นตอนที่ 4 เข้าไปใน Environment variables

6. เปิด Command Prompt ขึ้นมาใหม่ (สำหรับหน้าต่างในขั้นตอนที่ 1 ให้ปิดทิ้งไปได้เลย) แล้วทดสอบว่าการติดตั้ง Maven เสร็จเรียบร้อยดีไหมโดยพิมพ์คำสั่ง 

mvn -v

ถ้าลงเรียบร้อยแล้วจะขึ้นข้อความบอกเวอร์ชันที่ลง แต่ถ้าไม่ก็ให้ลองตรวจสอบอีกครั้งว่า PATH ที่เพิ่มเข้าไปใน Environment variables ถูกต้องไหม จากนั้นปิด Command Prompt แล้วทำตามขั้นตอนที่ 6 อีกครั้งหนึ่ง

7. หลังจากติดตั้งเสร็จเรียบร้อยแล้ว ต่อไปเราจะมาสร้างโปรเจกต์กันครับ แต่ก่อนอื่นเราจะสร้างโฟลเดอร์ใหม่สำหรับให้โปรเจกต์นี้อยู่ก่อน ในที่นี้ผมสร้างโฟลเดอร์ชื่อ maven_test ขึ้นมาโดยคลิกขวาแล้วเลือก New > Folder

8. กลับมาที่ Command Prompt ใช้คำสั่ง cd เพื่อไปที่โฟลเดอร์ที่สร้างในขั้นตอนที่ 7 จากนั้นพิมพ์คำสั่ง mvn ... ตามด้านล่าง เพื่อสร้างโปรเจกต์ภาษาจาวาด้วย Maven
หมายเหตุ1: สำหรับคำสั่ง mvn ... ให้ copy คำสั่งทั้งหมดไปใส่ใน Command Prompt โดยไม่ต้องขึ้นบรรทัดใหม่เลยนะครับ
หมายเหตุ2: ถ้าเป็นการใช้ Maven ครั้งแรก จะต้องรอนานหน่อยนะครับ เนื่องจากมันจะโหลด Plugin และไฟล์ต่างๆลงเครื่องเราก่อน

cd [ตามด้วย maven_test directory]
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

9. หลังจากรอจนเสร็จ ถ้าเข้าไปดูในโฟลเดอร์ maven_test จะเห็นว่ามีโฟลเดอร์ชื่อ my-app เพิ่มขึ้นมาซึ่งเป็นชื่อเดียวกันกับที่เรากำหนดใน artifactId ในขั้นตอนที่ 8

10. และถ้าดูไฟล์ในโฟลเดอร์ my-app จะพบว่ามีโครงสร้างดังนี้

  • src/main/java directory จะเป็นที่เก็บ project source code
  • src/test/java directory จะเป็นที่เก็บ test source
  • ไฟล์ pom.xml คือ Project Object Model หรือ POM ซึ่งเป็นตัวตั้งค่าต่างๆเกี่ยวกับการ build ของโปรเจกต์นี้

11. ลองเปิดไฟล์ App.java ในโฟลเดอร์ my-app\src\main\java\com\mycompany\app ขึ้นมาดูกันครับ (เปิดด้วยโปรแกรมเช่น Notepad หรือ Notepad++ ก็ได้ครับ) จะเห็นว่ามันมีโค้ดส่วนหนึ่งมาให้แล้ว สำหรับผู้ที่คุ้นเคยกับการเขียนโปรแกรมอยู่แล้วมองปุ๊บก็คงจะทราบได้ทันทีว่าโค้ดนี้จะแสดงผล Hello World! ออกมาเมื่อรันโปรแกรมนั่นเองครับ

12. ต่อไปเราจะมา build โปรเจกต์นี้เพื่อสร้างไฟล์ JAR กัน โดยเข้าไปใน directory my-app ด้วยคำสั่ง cd แล้ว build โปรเจกต์ด้วยคำสั่ง mvn package

cd my-app
mvn package

13. รอจน build เสร็จ จะขึ้นข้อความคล้ายๆในภาพ และเมื่อเข้าไปดูในโฟลเดอร์ my-app จะเห็นว่ามีโฟลเดอร์ชื่อ target เพิ่มขึ้นมา

14. เมื่อเข้าไปดูในโฟลเดอร์ target จะพบว่ามีไฟล์ my-app-1.0-SNAPSHOT.jar

15. มาลองรันไฟล์ JAR ที่ได้ออกมานี้ด้วยคำสั่งต่อไปนี้กันครับ จะเห็นว่าได้ผลลัพธ์คือ Hello World! ออกมา เย้ 

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

เสร็จแล้วครับ ไม่ยากใช่ไหมครับ ถ้าอยากเรียนรู้เพิ่มเติมหรือลองทำอย่างอื่นเพิ่มเติมก็สามารถอ่านได้จาก document ใน [1] ซึ่งเขียนไว้ละเอียดดีมากๆครับ

ประโยชน์ของ Maven ในแง่ธุรกิจ

เช่นเดียวกับ Gradle Maven ช่วยลดขั้นตอนและประหยัดเวลาเรื่องการ build App ไปได้อย่างมากโดยสามารถตั้งค่าต่างๆให้กับ App ของเราเวลา build ได้แทบทุกอย่างผ่านทางไฟล์ pom.xml เช่น จะ build โปรเจกต์ไหนบ้าง ข้อมูลเกี่ยวกับการ build เป็นอย่างไร ต้องใช้ Library หรือ Plugin หรือ Resource อะไรบ้าง ฯลฯ นอกจากในตัวอย่างด้านบนที่เป็นโปรเจกต์ชนิด quickstart แล้ว Maven ยังมี template ของโปรเจกต์อีกหลายชนิดให้เราสร้าง เช่น webapp เป็นต้น

และแน่นอนว่าเวลาเราเขียนโปรแกรมเชิงธุรกิจที่ซับซ้อนขึ้น เราคงไม่เขียนทุกอย่างด้วยตัวเองตั้งแต่ศูนย์ สิ่งที่เราควรทำคือดูว่ามี Library อะไรที่ method ของมันสามารถทำงานที่เราต้องการได้ ซึ่ง Maven ก็จะมาช่วยจัดการเรื่องการโหลด Library หรือ Plugin ต่างๆที่โปรเจกต์ของเราต้องใช้ (ที่เราเขียนกำหนดไว้ในไฟล์ pom.xml) ให้แบบครบๆไม่ต้องปวดหัวกันครับ

พื้นฐานที่ควรมีก่อนเขียน Java

การเขียนโปรแกรมภาษา Java นั้นไม่จำเป็นต้องมีความรู้เรื่องการเขียนโปรแกรมใดๆมาก่อนเลย ขอเพียงมีความรู้พื้นฐานคณิตศาสตร์ม.ต้นและม.ปลายบางอย่าง มีความรู้ภาษาอังกฤษพื้นฐานเล็กน้อยให้พออ่าน Document ได้ และความตั้งใจครับ 

ถ้าผู้อ่านสนใจอยากเรียนรู้อย่างลึกซึ้ง นำไปใช้ต่อยอดได้จริง ก็ขอแนะนำคอร์ส Java J104 ของทาง EPT ซึ่งในคอร์สนี้จะสอนตั้งแต่พื้นฐานไปจนถึงขั้น Advance เลยครับ สามารถดูรายละเอียดคอร์สได้โดยคลิกที่นี่ และที่ดีที่สุดคุ้มที่สุดครอบคลุมที่สุดคือคอร์ส Web Programming PHP101-J ของทาง EPT ครับ สามารถดูรายละเอียดคอร์สได้โดยคลิกที่นี่หรือติดต่อได้ที่ 085-350-7540

แล้วพบกันใหม่บทความหน้านะครับ 

 

ที่มาและเว็บไซต์อ้างอิง

[1] https://maven.apache.org
[2] https://gitbox.apache.org/repos/asf?p=maven.git

 


Tag ที่น่าสนใจ: maven build_tool java apache_software_foundation project_object_model pom dependencies xml maven_installation command_prompt java_installation apache_maven maven_project maven_archetype artifactid


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา