Skip to main content

Apache Ant


Apache Ant

Apache Ant āđ€āļ›็āļ™ project opensource āļ‚āļ­āļ‡ Apache āļ—ี่āļˆāļ°āļŠ่āļ§āļĒāđƒāļŦ้āđƒāļ™āļāļēāļĢ build āđƒāļ™āļāļēāļĢ compile āđāļĨāļ°āļ—āļģāđƒāļŦ้āļ‡āļēāļ™āļ‚āļ­āļ‡ programmer āļ™ั้āļ™āļ‡่āļēāļĒāļĄāļēāļāļ‚ึ้āļ™ āļ‹ึ่āļ‡āđƒāļ™ project āđƒāļ™āļĢāļ°āļ”ัāļš enterprise āļ‚āļ­āļ‡ java āļĄัāļāļˆāļ°āđƒāļŠ้ ant āļŠ่āļ§āļĒāđƒāļ™āļāļēāļĢ build āļĒัāļ™ deploy āđāļĨāļ°āđƒāļ™ IDE Java āđāļ—āļšāļ—ุāļāļ•ัāļ§āļ‚āļ­āļ‡ Java āļ็āđƒāļŠ้ Apache ant āđƒāļ™āļāļēāļĢ build, compile, āļŦāļĢืāļ­ pack āđ€āļ›็āļ™ archive file āļ‹ึ่āļ‡āļœāļĄāļˆāļ°āđ€āļāļĢิ่āļ™āđ€āļ„āļĢื่āļ­āļ‡āļ‚āļ­āļ‡ ant āļ„āļĢ่āļēāļ§āđ†āļ”ัāļ‡āļ”ัāļ‡āļ™ี้āļ„āļĢัāļš āļāļēāļĢāļˆāļ°āđƒāļŠ้ Apache Ant āđ„āļ”้āļ•้āļ­āļ‡āļ•ิāļ”āļ•ั้āļ‡āļ”ัāļ‡āļ™ี้āļ„āļĢัāļš
  • Apache Ant : load here
  • Java RE(āđāļ™āļ°āļ™āļģāļ•ิāļ”āđ€āļ›็āļ™ SDK āđ„āļ›āđ€āļĨāļĒ) 1.4 āļ‚ึ้āļ™āđ„āļ›
āļāļēāļĢāļ•ิāļ”āļ•ั้āļ‡ java āļ™ั้āļ™āļ‚āļ­āļ‚้āļēāļĄāđ„āļ›āđ€āļĨāļĒāļĄāļēāļžูāļ”āđ€āļĢื่āļ­āļ‡āļ•ิāļ”āļ•ั้āļ‡ apache ant āļัāļ™āđ€āļĨāļĒ āļ่āļ­āļ™āļ­ื่āļ™āļ™āļģ apache ant āļ—ี่āđ€āļĢāļēāđ‚āļŦāļĨāļ”āļĄāļēāļ™āļģāļĄāļē extract
āļĄāļēāļ§āļēāļ‡āđ„āļ§้āļ—ี่āđ„āļŦāļ™āļ็āđ„āļ”้āđāļ•่āļ–้āļēāļˆāļ°āđƒāļŦ้āļŠāļ°āļ”āļ§āļāđƒāļŦ้āļĄāļēāļ§āļēāļ‡āđ„āļ§้āļ—ี่ drive C: āļˆāļēāļāļ™ั้āļ™āļ็āļ•้āļ­āļ‡ set environemnt variable āļ„āļĢัāļš āđƒāļ™ windows āļĨāļ­āļ‡āļ•āļēāļĄ link āļ™ี้āđ„āļ›āļ”ูāļ„āļĢัāļšāļ§่āļēāļ•ั้āļ‡āļĒัāļ‡āđ„āļ‡āđ‚āļ”āļĒāļ—ี่āļŠāļģāļ„ัāļāļ—ี่āļ•้āļ­āļ‡ set āļĄีāļŠāļ­āļ‡āļ„่āļēāļ„āļĢัāļš
  • set ANT_HOME=C:apache-ant-1.7.0
  • set PATH=%PATH%;%ANT_HOME%bin;.;

āļˆāļēāļāļ™ั้āļ™āđ€āļĢāļēāļĨāļ­āļ‡ test āļ”ูāļ§่āļēāļ—ี่āđ€āļĢāļēāļ•ิāļ” ant āļĨāļ‡āđ„āļ›āļ™ั้āļ™āļŠāļģāđ€āļĢ็āļˆāļĄั้āļĒāļ”้āļ§āļĒāļ„āļģāļŠั่āļ‡āļ™ี้
  • ant -version
āļ–้āļēāļœ่āļēāļ™āđ„āļ”้āļ็āļˆāļ°āđ„āļ”้āļœāļĨāļĨัāļžāļ˜์āļ­āļ­āļāļĄāļēāļ”ัāļ‡āļ™ี้
  • Apache Ant version 1.7.0 compiled on December 13 2006
āļˆāļēāļāļ™ั้āļ™āđ€āļĢāļēāļĨāļ­āļ‡āļĄāļēāļ”ูāļัāļ™āļ§่āļēāļāļēāļĢāļˆāļ°āđƒāļŠ้ ant
āļˆāļĢิāļ‡āļ™ั้āļ™āļ•้āļ­āļ‡āļĄีāļ­āļ‡āļ„์āļ›āļĢāļ°āļāļ­āļšāļ­āļ°āđ„āļĢāļš้āļēāļ‡
  • build.xml
build.xml āđ€āļ›็āļ™ file āļ—ี่āđ€āļ›็āļ™āļ•ัāļ§ config āļ§่āļēāļˆāļ°āđƒāļŦ้ ant āļ‚āļ­āļ‡āđ€āļĢāļēāļ—āļģāļ­āļ°āđ„āļĢāļš้āļēāļ‡āđ€āļŠ่āļ™ build project, compile, āļšāļĨāļē ……..
āļ‹ึ่āļ‡āļ—ี่āļ•้āļ­āļ‡āļĨāļ°āļ§่āļēāļšāļĨāļēāđ†āđ†āđ†āđ† āļ™ั้āļ™āđ€āļžāļĢāļēāļ°āļ§่āļē ant āļ™ั้āļ™āļ—āļģāđ„āļ”้āļŦāļĨāļēāļĒāļ­āļĒ่āļēāļ‡ āļ™āļ­āļāļˆāļēāļāļˆāļ°āđƒāļŠ้āļัāļšāļ āļēāļĐāļē java āđ„āļ”้āđāļĨ้āļ§āļĒัāļ‡āļ•่āļ­ database āļ•่āļ­ mail
āđ€āļžื่āļ­āđ„āļ›āļ—āļģāļ­āļ°āđ„āļĢāļšāļēāļ‡āļ­āļĒ่āļēāļ‡āļ็āđ„āļ”้ āđāļĨāļ°āļĒัāļ‡āđ„āļ›āļ—āļģāļ‡āļēāļ™āļัāļšāļ āļēāļĐāļēāļ­ื่āļ™āđ„āļ”้āļ”้āļ§āļĒāđ€āļŠ่āļ™ ruby, jython āļŦāļĢืāļ­āđāļĄ้āđāļ•่āļāļĢāļ°āļ—ั้āļ‡ javascript āļ•่āļ­āļĄāļēāđ€āļĢāļēāļĄāļēāļ”ูāđ‚āļ„āļĢāļ‡āļŠāļĢ้āļēāļ‡āļ‚āļ­āļ‡ xml āđƒāļ™ build.xml āļัāļ™āļ”ีāļāļ§่āļēāļ§่āļēāđ€āļ›็āļ™āļĒัāļ‡āđ„āļ‡ āđ‚āļ”āļĒāļ›āļāļ•ิāđāļĨ้āļ§āđƒāļ™ build.xml
āđ‚āļ”āļĒāļ›āļāļ•ิāđāļĨ้āļ§āļˆāļ°āļĄีāļŦāļ™้āļēāļ•āļēāđāļšāļšāļ™ี้
<project name="MyFirstAnt" default="greet">   
 <property name="name" value="John"/>
 <target name="greet">       
  <echo>hello everybody</echo>
  <echo>my name is ${name}</echo>      
 </target> 
 <target name="bye" depends="greet">
  <echo>bye ${name}</echo> 
 </target> 
</project> 
āļˆāļēāļ code āļ”้āļēāļ™āļšāļ™āļ­āļēāļˆāļˆāļ°āļ‡āļ‡āđāļ•่āļˆāļ°āļ‚āļ­āļ­āļ˜ิāļšāļēāļĒāđ‚āļ„āļĢāļ‡āļŠāļĢ้āļēāļ‡āļŦāļĨัāļāđ†āļ‚āļ­āļ‡ ant āļ”ัāļ‡āļ™ี้ āđƒāļ™ build.xml 1 āļ­ัāļ™āļˆāļ°āļĄี project āļ­āļĒู่ 1 project āđ‚āļ”āļĒāļ—ี่āļ āļēāļĒāđƒāļ™ project āļ™ั้āļ™āļĄี target āđ„āļ”้āļŦāļĨāļēāļĒāđ† target āđāļĨāļ°āđƒāļ™āđāļ•่āļĨāļ° target āļ็āļˆāļ°āļĄี task āļ­āļĒู่ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļĄี task āđ„āļ”้āļŦāļĨāļēāļĒ task āđ‚āļ”āļĒāļ—ี่āļšāļēāļ‡āļ„āļĢั้āļ‡āđ€āļĢāļēāļ­āļēāļˆāļˆāļ°āļĄีāļ„่āļēāļšāļēāļ‡āļ„่āļēāļ—ี่āđƒāļŠ้āļŦāļĨāļēāļĒāđ†āļ—ี่ āđ€āļĢāļēāļ็āļˆāļ°āļ›āļĢāļ°āļāļēāļĻāđ€āļ›็āļ™ property āđ€āļžื่āļ­āļ­้āļēāļ‡āļ–ึāļ‡āđƒāļ™āļŦāļĨāļēāļĒāđ†āļŠ่āļ§āļ™
  • target : āđ‚āļ”āļĒ target āļ™ี้āđ€āļĢāļēāļĄāļ­āļ‡āđ€āļ›็āļ™āđ€āļŦāļĄืāļ­āļ™āđ€āļ›็āļ™ procedure āļ—ี่āļ”้āļēāļ™āđƒāļ™āļˆāļ°āļ›āļĢāļ°āļāļ­āļšāđ„āļ›āļ”้āļ§āļĒāļ‡āļēāļ™āļĒ่āļ­āļĒ (task) āļ—ี่āļĄāļēāļĢ้āļ­āļĒāđ€āļĢีāļĒāļ‡āļัāļ™āļāļĨāļēāļĒāļัāļ™āđ€āļ›็āļ™ procedure
  • task : āļ„ืāļ­āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđƒāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļŦāļ™ึ่āļ‡āļ—ี่āļĄีāļĨัāļāļĐāļ“āļ°āđ€āļ›็āļ™āļ‡āļēāļ™āļĒ่āļ­āļĒāđ† āļ—ี่āļŠāļēāļĄāļēāļĢāļ–āļ™āļģāļ›āļĢāļ°āļāļ­āļšāļัāļ™āđāļĨ้āļ§āļāļĨāļēāļĒāđ€āļ›็āļ™ procedure (target)
  • property : āļ•ัāļ§āļ™ี้āđ€āļ›็āļ™āļāļēāļĢāļāļģāļŦāļ™āļ”āļ„่āļēāļ„āļĨ้āļēāļĒāļāļēāļĢāļ›āļĢāļ°āļāļēāļĻ variable āļ—ี่āļ•้āļ­āļ‡āļ›āļĢāļ°āļāļēāļĻāļŠื่āļ­āđāļĨāļ° assign value āļĨāļ‡āđ„āļ› āļ›āļĢāļ°āļāļēāļĻāđ„āļ§้āđ€āļžื่āļ­āļ„āļ§āļēāļĄāļŠāļ°āļ”āļ§āļāđƒāļ™āļšāļēāļ‡āļ—ีāļ„่āļēāļšāļēāļ‡āļ„่āļēāļ™ั้āļ™āļ–ูāļāđ€āļĢีāļĒāļāđƒāļŠ้āđƒāļ™āļŦāļĨāļēāļĒāđ†āļ—ี่ āļ—āļģāđƒāļŦ้āļāļēāļĢāđāļ้āđ„āļ‚āļ āļēāļĒāļŦāļĨัāļ‡āļ™ั้āļ™āđ„āļ”้āđ€āļžāļĢāļēāļ°āļ§่āļēāđāļ้āđāļ„่āļ—ี่āđ€āļ”ีāļĒāļ§āđ€āļ—่āļēāļ™ั้āļ™
āļžāļ­āļˆāļ°āđ€āļ‚้āļēāđƒāļˆāđ‚āļ„āļĢāļ‡āļŠāļĢ้āļēāļ‡āļš้āļēāļ‡āđāļĨ้āļ§āļ™āļ°āļ„āļĢัāļšāļ—ี่āļ™ี้āđ€āļĢāļēāļˆāļ°āļ­āļ˜ิāļšāļēāļĒāđ€āļ‚้āļēāđ„āļ›āđƒāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡ xml āļ™āļ°āļ„āļĢัāļš āđƒāļ™āļŦāļ™ึ่āļ‡ build.xml āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļāļēāļĢ config āļŠั้āļ™āļŠุāļ”āđ€āļ—่āļēāļ™ี้āļ„āļĢัāļš āļ„ืāļ­āđƒāļ™ project āļ™ั้āļ™āđ„āļĄ่āļĄี task āļŦāļĢืāļ­āļ§่āļē target āđƒāļ”āđ†āļ—ั้āļ‡āļŠิ้āļ™ āļ”ัāļ‡āļ™ั้āļ™āļ•āļ­āļ™āđ€āļĢāļēāļĨāļ­āļ‡ run ant āļ็āļˆāļ°āđ„āļĄ่āļĄีāļāļēāļĢāļ—āļģāļ‡āļēāļ™āđƒāļ”āđāļ•่āļ–้āļēāđ€āļĢāļēāļ•้āļ­āļ‡āļĨāļ­āļ‡āđ€āļ‚ีāļĒāļ™ build.xml āđ€āļžื่āļ­āđƒāļŦ้ ant āļĨāļ­āļ‡āļ—āļģāļ‡āļēāļ™āļ”ูāļ็āļ‡่āļēāļĒāđ†āļ„āļĢัāļšāļĨāļ­āļ‡āđ€āļ›āļĨี่āļĒāļ™ config āļ”ัāļ‡āļ”้āļēāļ™āļĨ่āļēāļ‡āļ„āļĢัāļš
<project name="MyFirstAnt" default="greet">
  <echo>hello world</echo>
</project>
āļāļēāļĢāđ€āļĢีāļĒāļ task echo āļ™ั้āļ™āļ็āđ€āļŦāļĄืāļ­āļ™ System.out.println(”hello world”); āđƒāļ™ java āļ„āļĢัāļšāļ‹ึ่āļ‡āļˆāļ°āļĄี task āļ­āļĒ่āļēāļ‡āđ€āļ”ีāļĒāļ§āđ‚āļ”āļĒāļ—ี่āđ„āļĄ่āļĄี target āļ็āđ„āļ”้āļ„āļĢัāļš āļ•่āļ­āļĄāļēāđ€āļĢāļēāļˆāļ°āļĄāļēāļ”ู build.xml āļ—ี่āđ€āļ•็āļĄāļŠูāļšāļัāļ™āļ”ูāļ„āļĢัāļš

<project name="MyFirstAnt" default="greet">
  <property name="name" value="John"></property>
  <target name="greet">
    <echo>hello everybody</echo>
    <echo>my name is ${name}</echo>
  </target>
  <target name="bye" depends="greet">
    <echo>bye ${name}</echo>
  </target>
</project>

āđƒāļ™āļ™ี้āļˆāļ°āļĄี target āļ­āļĒู่ 2 target āļ„ืāļ­ greet āđāļĨāļ° bye āļ„āļĢัāļšāđ‚āļ”āļĒāļ—ี่āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŦ้ target āđāļ•่āļĨāļ° target āļ™ั้āļ™āļĄี dependency āđ„āļ”้āļ„āļĢัāļšāļ„ืāļ­āļ่āļ­āļ™āļ—ี่āļˆāļ°āļĢัāļ™ target āļ­āļ°āđ„āļĢāļ•้āļ­āļ‡āļ—āļģ target āļ­āļ°āđ„āļĢāļ่āļ­āļ™āđ€āļŠ่āļ™āđƒāļ™āļ•ัāļ§āļ­āļĒ่āļēāļ‡āļ™ี้ āļ่āļ­āļ™āļˆāļ°āļ—āļģ target bye āđ€āļĢāļēāļ•้āļ­āļ‡āļ—āļģ target greet āļ่āļ­āļ™āļ„āļĢัāļš āđāļĨāļ°āđƒāļ™āļ•ัāļ§āļ­āļĒ่āļēāļ‡āļ™ี้āļĄีāļāļēāļĢāđƒāļŠ้ property āļ”้āļ§āļĒ āđ€āļ™ื่āļ­āļ‡āļˆāļēāļāļ§่āļē āļŠื่āļ­āļ‚āļ­āļ‡ John āļ™ั้āļ™āļ­้āļēāļ‡āļĄāļēāļāļāļ§่āļēāļŦāļ™ึ่āļ‡āļ—ี่āđ€āļĢāļēāđ€āļĨāļĒ set property āđ€āļžื่āļ­āļ—ี่āļˆāļ°āļ­้āļēāļ‡āļ–ึāļ‡āđ„āļ”้āļ‡่āļēāļĒ
***āļŠัāļ‡āđ€āļāļ•ุāļ™āļ°āļ„āļĢัāļšāļ§่āļēāļ•āļĢāļ‡ project āļ„āļĢัāļšāđ€āļĢāļēāļĄีāļāļēāļĢāļāļģāļŦāļ™āļ” default āđ‚āļ”āļĒ set target greet āđ€āļ›็āļ™ default
āļāļēāļĢ run āļ™ั้āļ™āļ•้āļ­āļ‡ run āđƒāļ™ command promt āđāļĨ้āļ§āļ•้āļ­āļ‡āđ€āļ‚้āļēāđ„āļ›āļ­āļĒู่āđƒāļ™ directory āļ—ี่āļĄี build.xml āļ­āļĒู่āļ”้āļ§āļĒāđāļĨāļ°āļ•้āļ­āļ‡ set environment āļ•āļēāļĄāļ”้āļēāļ™āļšāļ™āļ่āļ­āļ™āļˆāļēāļāļ™ั้āļ™āđƒāļ™āļ„āļģāļŠั่āļ‡ ant āļ”ัāļ‡āļ™ี้
  • ant
āļ็āļˆāļ°āđ„āļ”้āļœāļĨāļĨัāļžāļ˜์āļ”ัāļ‡āļ™ี้
Buildfile: D:\xxx\build.xml
greet:
     [echo] hello everybody
     [echo] my name is John
BUILD SUCCESSFUL
Total time: 1 second
āļŠัāļ‡āđ€āļāļ•āļ§่āļē āļĄัāļ™āļˆāļ° run target greet āđ€āļžāļĢāļēāļ°āļ§่āļēāļ•āļĢāļ‡ āļ•ั้āļ‡ default āđ€āļ›็āļ™ target greet āđāļ•่āļ–้āļēāđ€āļĢāļēāļ•้āļ­āļ‡āļāļēāļĢāļˆāļ° run target bye āļ•āļ­āļ™ run āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļĢāļ°āļšุ target āđ„āļ”้āļ§่āļēāļˆāļ°āđ€āļ­āļē target āļ­āļ°āđ„āļĢāļ”ัāļ‡āļ™ี้
  • ant bye
āļ็āļˆāļ°āđ„āļ”้āļœāļĨāļĨัāļžāļ˜์āļ”ัāļ‡āļ™ี้
Buildfile: D:\xxx\build.xml
greet:
     [echo] hello everybody
     [echo] my name is John
bye:
     [echo] bye John
BUILD SUCCESSFUL
Total time: 94 milliseconds
āļˆāļ°āļžāļšāļ§่āļēāļˆāļ° run target greet āļ่āļ­āļ™ bye āđ€āļžāļĢāļēāļ°āļ§่āļēāļ•āļĢāļ‡ <target name="”bye”" depends="”greet”"> āļĄีāļāļēāļĢ set dependency āļ่āļ­āļ™ run target bye āļ•้āļ­āļ‡ run target greet āļ่āļ­āļ™</target>āļāļēāļĢāđ€āļ›āļĨี่āļĒāļ™āļ„่āļēāļ‚āļ­āļ‡ property āļ™ั้āļ™āļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļĨี่āļĒāļ™āļ•āļ­āļ™ run time āđ„āļ”้āđ„āļĄ่āļˆāļģāđ€āļ›็āļ™āļ•้āļ­āļ‡āđ€āļ›āļĨี่āļĒāļ™āđƒāļ™ xml āđ€āļŠāļĄāļ­āđ„āļ›āļ”ัāļ‡āļ•ัāļ§āļ­āļĒ่āļēāļ‡āļ”้āļēāļ™āļĨ่āļēāļ‡
  • ant bye -Dname=Jack
āđ„āļ”้āļœāļĨāļĨัāļžāļ˜์āļ”ัāļ‡āļ™ี้
Buildfile: D:\xxx\build.xml
greet:
     [echo] hello everybody
     [echo] my name is Jack
bye:
     [echo] bye Jack
BUILD SUCCESSFUL
Total time: 94 milliseconds
syntax āļāļēāļĢāđ€āļ›āļĨี่āļĒāļ™ property āļ”ัāļ‡āļ™ี้ -D<property-name>=</property-name>
āļˆāļēāļāļ”้āļēāļ™āļšāļ™āļ™ี้āđ€āļ›็āļ™āđ„āļ‡āļš้āļēāļ‡āļ„āļĢัāļšāđāļ•่āļ§่āļē task āļ™ั้āļ™āđ„āļĄ่āđ„āļ”้āļĄีāđāļ„่ echo āđ€āļ—่āļēāļ™ั้āļ™āļĨāļ­āļ‡āđ„āļ›āļ”ูāđƒāļ™ document āļ‚āļ­āļ‡ apache āļ•่āļ­āđ„āļ”้āļ„āļĢัāļš
āļ›āļĨ. āļŦāļ™ัāļ‡āļŠืāļ­ apache ant āļ āļēāļĐāļēāđ„āļ—āļĒāļ‚āļ­āļ‡ āļ”āļĢ.āļ§ีāļĢāļ°āļĻัāļāļ”ิ์ āļ‹ึāļ‡āļ–āļēāļ§āļĢ āđ€āļĒี่āļĒāļĄāļĄāļēāļāļ„āļĢัāļš

Comments

Popular posts from this blog

āļĨāļ­āļ‡āđ€āļĨ่āļ™āđāļĨāļ°āđ€āļĢีāļĒāļ™āļĢู้āļžื้āļ™āļāļēāļ™āļ‚ั้āļ™āļ•้āļ™āļ‚āļ­āļ‡ Spring Framework

** āļŠāļģāļŦāļĢัāļšāđƒāļ„āļĢāļ—ี่āđ„āļĄ่āđ€āļ„āļĒāđ€āļĢีāļĒāļ™āļĢู้āđƒāļ™āļ”้āļēāļ™āļ‚āļ­āļ‡ Java EE āļŦāļĢืāļ­ J2EE āļ­āļēāļˆāļˆāļ°āļĄึāļ™āļ‡āļ‡āļัāļšāļĻัāļžāļ—์āļŦāļ™่āļ­āļĒāļ„āļĢัāļš āļ—āļģāđ„āļĄāļ•้āļ­āļ‡ Spring Spring āđ€āļ›็āļ™ framework āļ—ี่āļ™ิāļĒāļĄāļĄāļēāļāđƒāļ™āļāļēāļĢāļ™āļģāđ„āļ›āļŠāļĢ้āļēāļ‡āļĢāļ°āļšāļšāđƒāļ™āļĢāļ°āļ”ัāļš enterprise āđƒāļ™āđ€āļĢิ่āļĄāđāļĢāļāļ—ี่ Spring āđ€āļิāļ”āļĄāļē āļĄีāļˆุāļ”āļĄุ่āļ‡āļŦāļĄāļēāļĒāđ€āļžื่āļ­āļ—ี่āļˆāļ°āļĄāļēāđāļ—āļ™āļ—ี่āļĄāļēāļ•āļĢāļāļēāļ™āļ‚āļ­āļ‡ Java āļ­āļĒ่āļēāļ‡ J2EE (Java 2 Enterprise Edition) āļ—ี่āļĄัāļ™āļ—ั้āļ‡āļŦāļ™่āļ§āļ‡āļ—ั้āļ‡āļ­ืāļ”āđāļĨāļ°āļĒุ่āļ‡āļĒāļēāļ āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āđƒāļ™āļŠ่āļ§āļ™āļ‚āļ­āļ‡ EJB (Enterprise Java Bean) āļ—ี่āļ–ืāļ­āļ§่āļēāđ€āļ›็āļ™āļัāļ™āļĢ้āļēāļĒāļ‚āļ­āļ‡āļ™ัāļāļžัāļ’āļ™āļē āļ—āļģāđƒāļŦ้āļูāļĢูāļŠāļēāļĒ Java āđƒāļ™āļŠ่āļ§āļ‡āļ™ั้āļ™āļ–ึāļ‡āļัāļšāđāļ™āļ°āļ™āļģāļ§่āļē āļ–้āļēāļˆāļģāđ€āļ›็āļ™āļ—ี่āļ•้āļ­āļ‡āļžัāļ’āļ™āļēāļĢāļ°āļšāļšāļ”้āļ§āļĒ J2EE āļˆāļ‡āļ­āļĒ่āļēāđƒāļŠ้ EJB āļ–ึāļ‡āļ‚ั้āļ™āļ–ึāļ‡āļัāļšāļĄีāļŦāļ™ัāļ‡āļŠืāļ­āđāļ™āļ°āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļžัāļ’āļ™āļēāļĢāļ°āļšāļš J2EE āđ‚āļ”āļĒāđ„āļĄ่āđƒāļŠ้ EJB āļ­āļĒ่āļēāļ‡āđ„āļĢāļ็āļ•āļēāļĄāļ—āļēāļ‡ Sun āļœู้āđ€āļ›็āļ™āđ€āļˆ้āļēāļ‚āļ­āļ‡ Java āđƒāļ™āļŠāļĄัāļĒāļ™ั้āļ™ āļ–ึāļ‡āļัāļšāļ•้āļ­āļ‡āļĄāļēāļĨ้āļēāļ‡āļĢāļ°āļšāļš J2EE āđƒāļŦāļĄ่āđƒāļ™āļ›ี 2006 āļˆัāļ”āļāļēāļĢāđƒāļ™ EJB āđƒāļŦ้āđƒāļŠ้āļ‡่āļēāļĒāļ‚ึ้āļ™ āļĄีāļ›āļĢāļ°āļŠิāļ—āļ˜ิāļ āļēāļžāļĄāļēāļāļ‚ึ้āļ™ āđāļĨāļ°āļĄีāļāļēāļĢāđ€āļ›āļĨี่āļĒāļ™āļŠื่āļ­āļˆāļēāļ J2EE āđ€āļ›็āļ™ Java EE (Java Enterprise Edition) āđ€āļžื่āļ­āļĨāļšāļ āļēāļžāļ­ัāļ™āđ€āļĨāļ§āļĢ้āļēāļĒāļ‚āļ­āļ‡āđ€āļ”ิāļĄāđƒāļŦ้āļŦāļĄāļ” āđāļĨāļ°āđ„āļ”้āļĄีāļāļēāļĢāļ™āļģāļŸีāđ€āļˆāļ­āļĢ์āđ€āļ”็āļ”āđ† āļ‚āļ­āļ‡ open source framework āļŦāļĨāļēāļĒāđ† āļ•ัāļ§ āļ­āļĒ่āļēāļ‡āđ€āļŠ่āļ™āđāļāļ™āļŦāļĨัāļāļ‚āļ­āļ‡ Spring āļ­āļĒ่āļēāļ‡ IoC (Inversion of Control) āļŦāļĢืāļ­ OR Mapping (Object Relational Mapping) āļ—ี่āđ€āļ›็āļ™āļ—ี่āļ™ิāļĒāļĄāļ­āļĒ่āļēāļ‡ Hibernate āđāļ•่āļ็āđ„...

āļĨāļ­āļ‡āđ€āļĨ่āļ™ Lambda Expression āļŸีāđ€āļˆāļ­āļĢ์āđ€āļ”่āļ™āđƒāļ™ Java 8

āļ›āļĢāļ°āļ§ัāļ•ิāļ„āļ§āļēāļĄāđ€āļ›็āļ™āļĄāļēāļ‚āļ­āļ‡ Lambda expression Lambda expression āđ„āļĄ่āđƒāļŠ่āļŠิ่āļ‡āđāļ›āļĨāļāđƒāļŦāļĄ่āđƒāļ™āļ§āļ‡āļāļēāļĢ āļ āļēāļĐāļēāđ‚āļ›āļĢāđāļāļĢāļĄ ( Programming Language ) āđ€āļžāļĢāļēāļ° lambda āļĄัāļ™āđ€āļ›็āļ™āđāļāļ™āļŦāļĨัāļāļ‚āļ­āļ‡ āļāļēāļĢāđ€āļ‚ีāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļŠิāļ‡āļŸัāļ‡āļ์āļŠัāļ™ ( Functional Programming ) āļ‹ึ่āļ‡āļĄีāļ­āļēāļĒุāļĄāļēāļ™āļēāļ™āļĄāļēāļāđāļĨ้āļ§ āđāļ•่ Java āđ€āļžิ่āļ‡āļ™āļģāđ€āļ­āļēāļ„ุāļ“āļŠāļĄāļšัāļ•ิāļ™ี้āđ€āļ­āļēāļĄāļēāđƒāļŠ่āļĨāļ‡āđƒāļ™āđ€āļ§āļ­āļĢ์āļŠัāļ™ 8 āļŦāļēāļāļˆāļ°āļāļĨ่āļēāļ§āļ–ึāļ‡āļ—ี่āļĄāļēāļ‚āļ­āļ‡ lambda āļ„āļ‡āļ•้āļ­āļ‡āđ„āļ›āļ”ูāļ—ี่āļ–ึāļ‡āļ—ี่āļĄāļēāļ‚āļ­āļ‡ lambda calculus āļ‹ึ่āļ‡āļ–ูāļāļŠāļĢ้āļēāļ‡āļ‚ึ้āļ™āļĄāļēāļ•ั้āļ‡āđāļ•่āļ›ี 1930 āđ‚āļ”āļĒāļ™ัāļāļ„āļ“ิāļ•āļĻāļēāļŠāļ•āļĢ์āļŠāļēāļ§āļ­āđ€āļĄāļĢิāļัāļ™  Alonzo Church  āđ€āļžื่āļ­āđƒāļŠ้āđƒāļ™āļāļēāļĢāđāļ้āđ‚āļˆāļ—āļĒ์āļ›ัāļāļŦāļēāļ—āļēāļ‡āļ„āļ“ิāļ•āļĻāļēāļŠāļ•āļĢ์āļ—ี่āļĄีāļ„āļ§āļēāļĄāļ‹ัāļšāļ‹้āļ­āļ™ āđƒāļ™āļšāļēāļ‡āļ„āļĢั้āļ‡āļŠāļĄāļāļēāļĢāļ—āļēāļ‡āļ„āļ“ิāļ•āļĻāļēāļŠāļ•āļĢ์āļ—ี่āļĒāļēāļ§āđ„āļ›āļ­āļēāļˆāļˆāļ°āļ—āļģāđƒāļŦ้āđ€āļิāļ”āļ„āļ§āļēāļĄāļ‹ัāļšāļ‹้āļ­āļ™āđ‚āļ”āļĒāđƒāļŠ่āđ€āļŦāļ•ุ lambda calculus āļˆāļ°āļ—āļģāļāļēāļĢāļĒุāļšāļšāļēāļ‡āļŠ่āļ§āļ™āļ‚āļ­āļ‡āļŠāļĄāļāļēāļĢāļ™ั้āļ™āļ­āļ­āļāļĄāļēāđ€āļ›็āļ™āļŸัāļ‡āļ์āļŠัāļ™āļĒ่āļ­āļĒāđ† āđ€āļžื่āļ­āļ—āļģāđƒāļŦ้āļŠāļĄāļāļēāļĢāļ™ั้āļ™āđ€āļ‚้āļēāđƒāļˆāļ‡่āļēāļĒāļ‚ึ้āļ™ āļ•่āļ­āļĄāļēāļŦāļĨัāļāļāļēāļĢāļ‚āļ­āļ‡ lambda calculus āđ„āļ”้āļ–ูāļāļ™āļģāđ„āļ›āđƒāļŠ้āđƒāļ™ Turing Machine āļ‹ึ่āļ‡āđ€āļ›็āļ™āđāļšāļšāļˆāļģāļĨāļ­āļ‡āđƒāļ™āļ­ุāļ”āļĄāļ„āļ•ิāļ‚āļ­āļ‡ Alan Turing  āļ—ี่āļ•่āļ­āļĄāļēāļāļĨāļēāļĒāđ€āļ›็āļ™āļ•้āļ™āđāļšāļšāļ—ี่āļ–ูāļāļ™āļģāđ„āļ›āđƒāļŠ้āđƒāļ™āļāļēāļĢāļœāļĨิāļ•  Von Neumann Machine  āļ‹ึ่āļ‡ Von Neumann Machine āļ•ัāļ§āļ™ี้āđ„āļ”้āļāļĨāļēāļĒāđ€āļ›็āļ™āļ•้āļ™āđāļšāļšāļ‚āļ­āļ‡āļ„āļ­āļĄāļžิāļ§āđ€āļ•āļ­āļĢ์āđ€āļ„āļĢื่āļ­āļ‡āđāļĢāļāļ‚āļ­āļ‡āđ‚āļĨāļāđƒāļ™āđ€āļ§āļĨāļēāļ•่āļ­āļĄāļē āļ—้āļēāļĒāļ—ี่āļŠุāļ”āđāļ™āļ§āļ„ิāļ”āļ‚āļ­āļ‡ lambda calculus āļ็āļ–ูāļ...

Inversion of Control āđāļĨāļ° Dependency Injection

Inversion of Control (IoC) āļ„ืāļ­āļ­āļ°āđ„āļĢ IoC āđ€āļ›็āļ™āļ—āļĪāļĐāļีāļ—ี่āļ§่āļēāļ”้āļ§āļĒ āļāļēāļĢāļĨāļ”āļ„āļ§āļēāļĄāļœูāļāļĄัāļ” (dependency) āļัāļ™āđƒāļ™āļĢāļ°āļŦāļ§่āļēāļ‡ module āđ€āļžื่āļ­āđƒāļŦ้ application āļ‚āļ­āļ‡āđ€āļĢāļēāđāļ้āđ„āļ‚ (maintain) āļ•่āļ­āđ€āļ•ิāļĄ (extensible) āļŦāļĢืāļ­āļ—āļ”āļŠāļ­āļš (test) āđ„āļ”้āļ‡่āļēāļĒāļ‚ึ้āļ™ āļ‹ึ่āļ‡āđ€āļ­āļēāļˆāļĢิāļ‡āđ† IoC āđ€āļ›็āļ™āļ­āļ°āđ„āļĢāļ—ี่āļ—āļģāđƒāļŦ้āđ€āļĢāļēāļŠัāļšāļŠāļ™āđāļĨāļ°āļ‡ุāļ™āļ‡āļ‡āļĄāļēāļāđ† āļ§่āļēāļĄัāļ™āļ„ืāļ­āļ­āļ°āđ„āļĢ āļŦāļĨāļēāļĒāđ† āļ„āļ™āļˆึāļ‡āļĒāļāđƒāļŦ้āļ§่āļē IoC āļ„ืāļ­ Dependency Injection (DI) āļ‹ึ่āļ‡āļˆāļĢิāļ‡āđ† āļĄัāļ™āļ็āđ„āļĄ่āļ–ูāļāļ‹āļ°āļ—ีāđ€āļ”ีāļĒāļ§  Dependency āļ„ืāļ­āļ­āļ°āđ„āļĢ Dependency āļ„ืāļ­āļāļēāļĢāļœูāļāļĄัāļ”āļ—ี่āđ€āļิāļ”āļ‚ึ้āļ™āđƒāļ™āļĢāļ°āļšāļš āđ€āļĄื่āļ­ module āļ™ึāļ‡āļĄีāļāļēāļĢāđ€āļĢีāļĒāļāđƒāļŠ้āļ­ีāļ module āļ™ึāļ‡āļ”้āļ§āļĒāļāļēāļĢāļ­้āļēāļ‡āļ­ิāļ‡ (reference) āļ•āļĢāļ‡āđ† āđāļĨ้āļ§āļ­āļ°āđ„āļĢāļ—ี่āđ€āļĢีāļĒāļāļ§่āļēāļāļēāļĢ āļ­้āļēāļ‡āļ­ิāļ‡ (Reference) āđāļšāļšāļ•āļĢāļ‡āđ†   āļ­āļĒ่āļēāļ‡āļ āļēāļž diagram āļ”้āļēāļ™āļšāļ™ class LogEngine āļĄีāļāļēāļĢāđ€āļĢีāļĒāļāđƒāļŠ้ ConsoleLog āđ‚āļ”āļĒāļ•āļĢāļ‡ āļ‹ึ่āļ‡āļĄāļ­āļ‡āļœ่āļēāļ™ diagram āļ­āļēāļˆāļˆāļ°āđ„āļĄ่āđ€āļŦ็āļ™āļ āļēāļžāļĨāļ­āļ‡āļ”ู code āļัāļ™ public class ConsoleLog { public void openLog(){ //do something to open log } public void log(String message){ //do something to log } public void closeLog(){ //do something to close log } } public class LogEngine { private ConsoleLog log; public LogEng...