You are on page 1of 4

‫)ﻤﻠﺤﻕ(‬

‫ﺠﺎﻓﺎ ‪JAVA‬‬

‫‪ .1‬ﺘﺴﻤﻴﺔ ﺠﺎﻓﺎ‬

‫‪OAK‬‬ ‫ﺒﺎﻹﻨﻜﻠﻴﺯﻴﺔ ﺍﻟﻘﻬﻭﺓ‪ ،‬ﻭﻫﻭ ﺍﻻﺴﻡ ﺍﻟﺫﻱ ﺃﻁﻠﻕ ﻋﻠﻰ ﻟﻐﺔ ﺍﻟﺒﺭﻤﺠﺔ ﻓﻲ ﻤﺸﺭﻭﻉ‬ ‫‪Java‬‬ ‫ﺘﻌﻨﻲ ﺠﺎﻓﺎ‬
‫ﻓﻲ ﺸﺭﻜﺔ ‪ ،SUN‬ﻭﻗﺩ ﺍﺨﺘﺎﺭ ﺍﻟﻔﺭﻴﻕ ﺍﻟﻤﺴﺅﻭل ﻋﻥ ﺘﺼﻤﻴﻡ ﺍﻟﻠﻐﺔ ﻫﺫﺍ ﺍﻻﺴﻡ ﺨﻼل ﺫﻫﺎﺒﻬﻡ ﻻﺤﺘـﺴﺎﺀ‬
‫ﺍﻟﻘﻬﻭﺓ‪ .‬ﻜﺎﻥ ﺍﻟﻤﺸﺭﻭﻉ ﻴﻬﺩﻑ ﺇﻟﻰ ﺘﺼﻤﻴﻡ ﻟﻐﺔ ﺒﺭﻤﺠﺔ ﻴﻤﻜﻨﻬﺎ ﺍﻟﺘﻌﺎﻤل ﻤﻊ ﻋﺩﺓ ﺃﺠﻬـﺯﺓ ﺍﺴـﺘﻬﻼﻜﻴﺔ‬
‫ﻜﻬﺭﺒﺎﺌﻴﺔ‪ ،‬ﻜﺄﺠﻬﺯﺓ ﻗﺎﺭﺉ ﺍﻟﻔﻴﺩﻴﻭ ﻭﺃﻓﺭﺍﻥ ﺍﻷﻤﻭﺍﺝ ﺍﻟﻤﻴﻜﺭﻭﻴﺔ ﻭﻤﺎ ﺸﺎﺒﻬﻬﺎ‪ .‬ﻭﻗﺩ ﻜﺎﻨـﺕ ﺍﻻﻨﻁﻼﻗـﺔ‬
‫ﻭﺍﻨﺘﺸﺎﺭﻫﺎ ﺍﻟﻭﺍﺴﻊ‪ .‬ﺇﺫ ﺃﺼﺒﺤﺕ ﺠﺎﻓﺎ ﻭﻗﺘﻬﺎ ﺍﻟﻭﺴـﻴﻠ ﹶﺔ‬ ‫)‪(Web‬‬ ‫ﺍﻟﺤﻘﻴﻘﻴﺔ ﻟﺠﺎﻓﺎ ﻤﻊ ﻅﻬﻭﺭ ﺘﻘﺎﻨﺔ ﺍﻟﻭﻴﺏ‬
‫ﻼ ﻭﺘﻨﻔﺙ ﻓﻴﻬﺎ ﺩﻴﻨﺎﻤﻴﻜﻴﺔ ً)‬
‫ﺘﻌﻁﻲ ﺼﻔﺤﺎﺕ ﺍﻟﻭﻴﺏ ﻤﻅﻬﺭﹰﺍ ﺠﻤﻴ ﹰ‬ ‫)‪(Applets‬‬ ‫ﺍﻟﻤﺜﻠﻰ ﻟﺘﻁﻭﻴﺭ ﺒﺭﻴﻤﺠﺎﺕ‬
‫ﺍﻟﺘﻲ ﺘﻔﺴﺭ‪‬ﻫﺎ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ‬ ‫)‪(HTML‬‬ ‫ﺍﻟﺒﺭﻴﻤﺠﺎﺕ ﻫﻲ ﺒﺭﺍﻤﺞ ﺠﺎﻓﺎ ﺼﻐﻴﺭﺓ ﻴﻤﻜﻥ ﺍﺴﺘﺩﻋﺎﺅﻫﺎ ﻤﻥ ﻟﻐﺔ‬
‫ﻹﻅﻬﺎﺭ ﺼﻔﺤﺎﺕ ﺍﻟﻭ ِﻴﺏ(‪.‬‬

‫‪ .2‬ﺒﻴﺌﺔ ﺠﺎﻓﺎ ﺍﻟﺒﺭﻤﺠﻴﺔ‬

‫ﻟﻴﺴﺕ ﺠﺎﻓﺎ ﻟﻐﺔ ﺒﺭﻤﺠﺔ ﻓﻘﻁ‪ ،‬ﺒﻴﻨﻤﺎ ﻫﻲ ﺜﻼﺜﺔ ﺃﺸﻴﺎﺀ ﻓﻲ ﻭﻗﺕ ﻭﺍﺤﺩ‪:‬‬

‫ﺠﺎﻓﺎ ﻫﻲ ﻟﻐﺔ ﺒﺭﻤﺠﺔ ﺒﺎﻟﺘﺄﻜﻴﺩ‪ ،‬ﻭﺘﺸﺒﻪ ﻜﺜﻴﺭﹰﺍ ﻓﻲ ﻤﻔﺭﺩﺍﺘﻬﺎ ﻭﻗﻭﺍﻋـﺩﻫﺎ )‪(keywords and syntax‬‬ ‫‪y‬‬
‫ﺍﻟﻤﺸﻬﻭﺭﺓ ﺒﻴﻥ ﺃﻏﻠﺏ ﺍﻟﻤﺒﺭﻤﺠﻴﻥ‪ .‬ﺇﺫ ﻨﺭﻯ ﻨﻔﺱ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﺒﺭﻤﺠﻴـﺔ ﺒـﻨﻔﺱ ﺍﻟﻜﻠﻤـﺎﺕ‬ ‫‪C‬‬ ‫ﻟﻐ ﹶﺔ‬
‫ﻭ ‪ ،java‬ﻋﻨﺩﻤﺎ ﻴﺘﻌﻠﻕ ﺍﻷﻤﺭ ﺒﻭﻅﺎﺌﻑ ﺒﺭﻤﺠﻴﺔ ﻤﺘﻜﺎﻓﺌﺔ‪ .‬ﻭﻟﻜﻥ ﻟﻐﺔ ﺠﺎﻓﺎ‪ ،‬ﻓـﻲ‬ ‫‪C ,‬‬ ‫ﻭﺍﻟﻘﻭﺍﻋﺩ ﻓﻲ‬
‫‪Object Oriented Programming‬‬ ‫ﺃﺴﺎﺱ ﺘﺼﻤﻴﻤﻬﺎ ﻫـﻲ ﺃﻴـﻀﹰﺎ ﻟﻐـﺔ ﻏﺭﻀـﻴﺔ ﺍﻟﺘﻭﺠـﻪ )‬
‫‪.(Language‬‬

‫ﺍﻟﻭﺠﻪ ﺍﻷﻜﺜﺭ ﺨﺼﻭﺼﻴﺔ ﻟﺠﺎﻓﺎ ﻫﻭ ﻤﺤﻴﻁ ﺍﻟﺘﻨﻔﻴﺫ ﺍﻟﺨﺎﺹ ﺒﻬﺎ ﻭﺍﻟﻤﺴﻤﻰ ﺁﻟﺔ ﺠﺎﻓـﺎ ﺍﻻﻓﺘﺭﺍﻀـﻴﺔ‬ ‫‪y‬‬
‫)‪ .(JVM: Java Virtual Machine‬ﻭﻫﻲ ﻤﺠﻤﻭﻋﺔ ﺍﻟﺒﺭﻤﺠﻴﺎﺕ ﺍﻟﺘﻲ ﺘﻘﻠﱢﺩ ﺁﻟ ﹰﺔ ﺘﺴﻤﺢ ﺒﺘﻨﻔﻴﺫ ﺒـﺭﺍﻤﺞ‬
‫ﺠﺎﻓﺎ‪.‬‬

‫ﺍﻟﻭﺠﻪ ﺍﻟﺜﺎﻟﺙ ﻟﺠﺎﻓﺎ ﻫﻭ ﺘﻠﻙ ﺍﻟﻤﻜﺘﺒﺔ ﺍﻟﻜﺒﻴﺭﺓ ﻤﻥ ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﺒﺭﻤﺠﻴـﺔ ﺍﻟﺠـﺎﻫﺯﺓ ﺍﻟﺘـﻲ ﺘﺘﻴﺤﻬـﺎ‬ ‫‪y‬‬
‫ﺍﻟﻤﻠﺤﻘﺔ ﺒﻪ‪،‬ﺍ ﻭﺍﻟﺘﻲ ﺘﺴﻤﺢ ﻟﻠﻤﺒﺭﻤﺞ ﺒﻜﺘﺎﺒـﺔ ﺒـﺭﺍﻤﺞ ﻤﺘﻌـﺩﺩﺓ ﺍﻟﻭﻅـﺎﺌﻑ‬ ‫)‪(Classes‬‬ ‫ﺍﻟﺼﻔﻭﻑ‬
‫ﺒﺴﻬﻭﻟﺔ‪ .‬ﻓﻬﻨﺎﻙ ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ﻤﻜﺘﺒﺔ ﻟﺒﺭﻤﺠﺔ ﻭﺍﺠﻬﺎﺕ ﺍﻟﺘﻁﺒﻴﻘﺎﺕ ﺒـﺸﻜل ﺒﻴـﺎﻨﻲ ﺘﻔـﺎﻋﻠﻲ‪،‬‬
‫ﻭﺍﻟﺭﺴﻡ ﺍﻟﺒﻴﺎﻨﻲ ﺍﻟﻬﻨﺩﺴﻲ‪ ،‬ﻭﻤﻜﺘﺒﺔ ﻟﻠﺘﻭﺍﺒﻊ ﺍﻟﺭﻴﺎﻀﻴﺔ‪ ....‬ﺘﹸﺠﻤ‪‬ﻊ ﺍﻟﺼﻔﻭﻑ ﻓـﻲ ﺤـﺯﻡ ﺒﺭﻤﺠﻴـﺔ‬
‫‪ ،‬ﻭﻨﺠﺩ‪ ،‬ﻓﻲ ﻤﺤﻴﻁ ﺘﻁﻭﻴﺭ ﺠﺎﻓﺎ‪ ،‬ﻋﺩﺩﹰﺍ ﻜﺒﻴﺭﹰﺍ ﻤﻥ ﻫﺫﻩ ﺍﻟﺤﺯﻡ ﺍﻟﻘﻴﺎﺴﻴﺔ ﺘﻘﺩﻡ ﻭﻅﺎﺌﻔـﹰﺎ‬ ‫)‪(package‬‬

‫ﻏﻨﻴﺔ ﻭﻤﺘﻨﻭﻋﺔ‪.‬‬

‫ﻭﻴﻅﻬﺭ ﺠﻠﻴﺎ ﻤﻥ ﻜل ﻤﺎ ﺴﺒﻕ ﺃﻥ ﻤﺼﻤﻤﻲ ﺠﺎﻓﺎ ﻗﺩ ﺒﺫﻟﻭﺍ ﺠﻬﺩﻫﻡ ﻟﻴﺯﻭﺩﻭﺍ ﺍﻟﻤﺒﺭﻤﺞ ﺒﻜل ﻤﺎ ﻴﺤﺘﺎﺠﻪ‬
‫ﻟﻠﻌﻤل ﺘﻘﺭﻴﺒﺎ ﻭﻫﺫﺍ ﻤﺎ ﻴﺠﻌل ﻤﻥ ﺠﺎﻓﺎ ﻟﻐﺔ ﻤﻤﻴﺯﺓ ﺒﺠﺩﺍﺭﺓ‪.‬‬

‫‪ .3‬ﺍﻟﺨﺼﺎﺌﺹ ﺍﻷﺴﺎﺴﻴﺔ ﻟﻠﻐﺔ ﺠﺎﻓﺎ‬

‫ﺴﻨﺘﺤﺩﺙ ﻫﻨﺎ ﻋﻥ ﺍﻟﺨﺼﺎﺌﺹ ﺍﻷﺴﺎﺴﻴﺔ ﻟﺠﺎﻓﺎ ﺍﻟﺘﻲ ﺘﻤﻴﺯﻫﺎ ﻋﻥ ﺒﺎﻗﻲ ﺍﻟﻠﻐﺎﺕ‪.‬‬

‫ﻋﺩﻡ ﺍﻻﺭﺘﺒﺎﻁ ﺒﺒﻴﺌﺔ ﺍﻟﺘﻨﻔﻴﺫ‬ ‫‪y‬‬


‫‪class‬‬ ‫ﺘﻨﻁﺒﻕ ﻋﻠﻰ ﺠﺎﻓﺎ ﻤﻘﻭﻟﺔ‪ :‬ﺍﻜﺘﺏ ﻤﺭﺓ ﻭﻨﻔﺫ ﺃﻴﻨﻤﺎ ﺸﺌﺕ‪ .‬ﺇﺫ ﻴﻭﻟﺩ ﻤﺘﺭﺠﻡ ﺍﻟﻠﻐﺔ ﻤﻠﻔﹰﺎ ﻤﻥ ﻨﻭﻉ‬
‫‪،‬‬ ‫‪bytecode‬‬ ‫ﻴﺤﺘﻭﻱ ﻋﻠﻰ ﺘﺭﻤﻴﺯ ﺒﻠﻐﺔ ﺨﺎﺼﺔ‪ ،‬ﻫﻲ ﻟﻐﺔ ﺍﻵﻟﺔ ﺍﻻﻓﺘﺭﺍﻀﻴﺔ‪ .‬ﻴ‪‬ﺩﻋﻰ ﻫﺫﺍ ﺍﻟﺘﺭﻤﻴﺯ‬
‫ﻭﻻ ﻴﺭﺘﺒﻁ ﺒﺄﻱ ﺸﻜل ﻜﺎﻥ ﺒﺎﻵﻟﺔ ﺃﻭ ﺒﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﺍﻟﺫﻴﻥ ﻭﻟﱢﺩ ﻋﺒﺭﻫﻤﺎ ﻁﺎﻟﻤـﺎ ﺠـﺭﻯ ﺍﻟﺘﻭﻟﻴـﺩ‬
‫ﺒﺎﺴﺘﺨﺩﺍﻡ ﺃﺩﻭﺍﺕ ﻤﺘﻭﺍﻓﻘﺔ ﻤﻊ ﻤﻭﺍﺼﻔﺎﺕ ﺍﻵﻟﺔ ﺍﻻﻓﺘﺭﺍﻀﻴﺔ ﺍﻟﺘﻲ ﻭﻀـﻌﺘﻬﺎ ﺸـﺭﻜﺔ ‪ .SUN‬ﻭﻷﻥ‬
‫ﺍﻟﺘﺭﻤﻴﺯ ﺍﻟﻤﻭﻟﺩ ﻻ ﻴﺤﻭﻱ ﺃﻱ ﺘﻌﻠﻴﻤﺎﺕ ﺘﺘﻌﻠﻕ ﺒﺎﻟﻨﻅﺎﻡ ﺃﻭ ﺒﺎﻟﻤﻌﺎﻟﺞ ﻓﻬﻭ ﻗﺎﺒل ﻟﻠﻨﻘل ﻭﺍﻟﺘﻨﻔﻴﺫ ﻓﻲ ﺃﻱ‬
‫ﺒﻴﺌﺔ ﺘﺘﻭﺍﻓﺭ ﻓﻴﻬﺎ ﻨﺴﺨﺔ ﻨﻅﺎﻤﻴﺔ ﻤﻥ ﺁﻟﺔ ﺠﺎﻓﺎ ﺍﻻﻓﺘﺭﺍﻀﻴﺔ‪ .‬ﻭﻷﻥ ﻜﻠﻤﺔ ﻫـﺫﻩ ﺍﻵﻟـﺔ ﻫـﻲ ﺒﺎﻴـﺕ‬
‫‪ ،bytecode‬ﺼﺎﺭ ﺒﺎﻹﻤﻜﺎﻥ ﺸﺤﻥ ﺒﺭﺍﻤﺞ ﺠﺎﻓﺎ ﺍﻟﺠﺎﻫﺯﺓ ﻟﻠﺘﻨﻔﻴﺫ ﻋﺒﺭ ﺍﻟﺸﺒﻜﺔ ‪ .‬ﻭ ﺘﻘﻭﻡ ﻫﺫﻩ ﺍﻵﻟـﺔ‬
‫ﺍﻻﻓﺘﺭﺍﻀﻴﺔ ﺒﺎﻟﺘﻌﺎﻤل ﻤﻊ ﺍﻵﻟﺔ ﺍﻟﻔﻌﻠﻴﺔ ﻭﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻟﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﺍﻤﺞ‪ .‬ﻓﺒﺈﻤﻜﺎﻨﻨﺎ ﻜﺘﺎﺒـﺔ ﺒﺭﻨـﺎﻤﺞ‬
‫ﻭﺘﻨﻔﻴﺫﻩ ﻓﻭﺭﹰﺍ ﻋﻠـﻰ ﺤﺎﺴـﺏ ﻴﻌﻤـل ﻀـﻤﻥ ﺒﻴﺌـﺔ‬ ‫‪Linux‬‬ ‫ﺒﻠﻐﺔ ﺠﺎﻓﺎ ﻴﻌﻤل ﻋﻠﻰ ﻨﻅﺎﻡ ﺘﺸﻐﻴل‬
‫ﺩﻭﻥ ﺍﻟﺤﺎﺠﺔ ﺇﻟﻰ ﺇﻋﺎﺩﺓ ﺍﻟﺘﺭﺠﻤﺔ ﺃﻭ ﺘﻌﺩﻴل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻷﺼﻠﻲ‪ .‬ﻫﺫﻩ ﺍﻟﺨﺎﺼﺔ ﻫﺎﻤﺔ ﺠﺩﹰﺍ‬ ‫‪Windows‬‬

‫ﺒﺎﻟﻨﺴﺒﺔ ﻟﻤﻁﻭﺭﻱ ﺍﻟﺒﺭﺍﻤﺞ ﻭﺍﻟﺸﺭﻜﺎﺕ ﺍﻟﺘﻲ ﻜﺎﻨﺕ ﺘﺘﻜﺒﺩ ﻤﺒﺎﻟﻎ ﻁﺎﺌﻠﺔ ﻟﻨﻘل ﺍﻟﺒﺭﻤﺠﻴﺎﺕ ﻤـﻥ ﺒﻴﺌـﺔ‬
‫ﺇﻟﻰ ﺃﺨﺭﻯ‪.‬‬

‫ﺴﻬﻭﻟﺔ ﺍﻟﺘﻌﻠﻡ‬ ‫‪y‬‬


‫‪C‬‬ ‫ﺒﻬﺩﻑ ﺴﻬﻭﻟﺔ ﺍﻟﺘﻌﻠﻡ‪ ،‬ﺒﺫل ﻤﺼﻤﻤﻭ ﻟﻐﺔ ﺠﺎﻓﺎ ﻗﺼﺎﺭﻯ ﺠﻬﺩﻫﻡ ﻟﻠﻤﺤﺎﻓﻅﺔ ﻋﻠﻰ ﺼﻴﻐﺔ ﺘﺸﺒﻪ ﻟﻐﺔ‬
‫ﺍﻟﺸﺎﺌﻌﺔ ﺠﺩﹰﺍ ﺒﻴﻥ ﺍﻟﻤﺒﺭﻤﺠﻴﻥ‪ .‬ﻭﻟﻜﻨﻬﻡ ﺤﺎﻭﻟﻭﺍ ﻓﻲ ﺍﻟﻭﻗﺕ ﺫﺍﺘﻪ ﺃﻥ ﻴﺤﺩﻭﺍ ﻤﻥ ﺍﻟﻤﺸﻜﻼﺕ ﺍﻟﻤﺭﺘﺒﻁﺔ‬
‫ﺒﻠﻐﺎﺕ ‪ .C/C++‬ﻭﻗﺩ ﻭﻓﹼﻘﻭﺍ ﻓﻲ ﺫﻟﻙ ﺇﻟﻰ ﺤﺩ ﻜﺒﻴﺭ‪ .‬ﻓﻘﺩ ﺃﺼﺒﺢ ﻤﻥ ﺍﻟﻤﻌﺭﻭﻑ ﻟـﺩﻯ ﺍﻟﻤﺒـﺭﻤﺠﻴﻥ‬
‫ﺘﺤﻭﻱ ﻤﺼﺎﺩﺭﹰﺍ ﻋﺩﻴﺩﺓ ﻟﻸﺨﻁﺎﺀ ﺘﺅﺩﻱ ﺇﻟﻰ ﻅﻬﻭﺭ ﺃﺨﻁﺎﺀ ﺃﺜﻨـﺎﺀ‬ ‫‪C/C++‬‬ ‫ﺫﻭﻱ ﺍﻟﺨﺒﺭﺓ ﺃﻥ ﻟﻐﺎﺕ‬
‫ﻤﻥ ﺍﻟﺼﻌﻭﺒﺔ ﺒﻤﻜﺎﻥ ﺍﻜﺘﺸﺎﻑ ﻤﺼﺩﺭﻫﺎ‪.‬‬ ‫ﺘﻨﻔﻴﺫ )‪(runtime errors‬‬

‫ﻭﺍﺭﺘﺄﻯ ﻤﺼﻤﻤﻭ ﺍﻟﻠﻐﺔ ﺘﻭﺤﻴﺩ ﺘﻤﺜﻴل ﺍﻷﻨﻤﺎﻁ ﺍﻷﺴﺎﺴﻴﺔ ﻓﻲ ﺍﻟﻠﻐﺔ ﻤﺘﺨﻠﺼﻴﻥ ﺒﺫﻟﻙ ﻤﻥ ﺇﺤﺩﻯ ﺃﻜﺒﺭ‬
‫ﺒـﺄﺭﺒﻊ‬ ‫‪int‬‬ ‫ﺍﻟﻤﺸﻜﻼﺕ ﺍﻟﺘﻲ ﻴﻌﺎﻨﻴﻬﺎ ﺍﻟﻤﺒﺭﻤﺞ‪ .‬ﻓﻌﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل‪ ،‬ﻴﺤﺩﺩ ﺤﺠﻡ ﺍﻟﻌـﺩﺩ ﺍﻟـﺼﺤﻴﺢ‬
‫‪ .(4‬ﻤﻤﺎ ﻴﻌﻨﻲ ﺃﻨﻪ ﻟﻴﺴﺕ ﻫﻨﺎﻙ ﺃﻱ ﻤﺸﻜﻠﺔ ﻓﻲ ﻨﻘل ﻭﺘﺒﺎﺩل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻴﻥ ﺒﺭﺍﻤﺞ‬ ‫)‪bytes‬‬ ‫ﺜﹸﻤﺎﻨﻴﺎﺕ‬
‫ﺠﺎﻓﺎ ﺃﻭ ﻅﻬﻭﺭ ﺃﻋﻁﺎل ﺒﺴﺒﺏ ﺘﻐﻴﺭ ﺤﺠﻡ ﺍﻟﻤﺘﺤﻭﻻﺕ‪.‬‬

‫ـﺔ‬
‫ـﺭﺍﻤﺞ ﺍﻟﺠﺯﺌﻴـ‬
‫ـﻴﻥ ﺍﻟﺒـ‬
‫ﺒـ‬ ‫)‪(parameters‬‬ ‫ـﺭ ﺍﻟﻤﺤـﺩ‪‬ﺩﺍﺕ‬
‫ـﺴــــــﺒﺔ ﻟﺘﻤﺭﻴـ‬
‫ـﺎ ﺒﺎﻟﻨـ‬
‫ﺃﻤـ‬
‫ﺤﺼﺭﺍﹰ‪ ،‬ﻭﻻ ﻴﻤﻜﻥ ﻟﻺﺠﺭﺍﺀ ﺘﻐﻴﻴﺭ‬ ‫)‪(by value‬‬ ‫‪ ،subprograms‬ﻓﻬﻭ ﻴﻘﺘﺼﺭ ﻋﻠﻰ ﺘﻤﺭﻴﺭﻫﺎ ﻜﻘﻴﻡ‬
‫ﻗﻴﻡ ﺍﻟﻤﺤﺩﺩﺍﺕ‪ ،‬ﻤﻤﺎ ﻴﺴﻤﺢ ﻟﻠﻤﺒﺭﻤﺠﻴﻥ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻤﻜﺘﺒﺎﺕ ﺠﺎﻫﺯﺓ ﺩﻭﻥ ﺃﻱ ﺨﻭﻑ ﻤـﻥ ﺍﺤﺘﻤـﺎل‬
‫ﻅﻬﻭﺭ ﺃﺨﻁﺎﺀ ﺴﺒﺒﻬﺎ ﺘﻌﺩﻴل ﻫﺫﻩ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﺠﺯﺌﻴﺔ ﻟﻠﻤﺤﺩﺩﺍﺕ‪.‬‬

‫ﻟﻐﺔ ﻏﺭﻀﻴﺔ ﺍﻟﺘﻭﺠﻪ‬ ‫‪y‬‬


‫‪(OOPL: Object Oriented‬‬ ‫ﺼﻤﻤﺕ ﺠﺎﻓﺎ ﻤﻨﺫ ﺍﻟﺒﺩﺀ ﻟﺘﻜﻭﻥ ﻟﻐـﺔ ﺒﺭﻤﺠـﺔ ﻏﺭﻀـﻴﺔ ﺍﻟﺘﻭﺠـﻪ‬
‫‪‬‬
‫ﻤﻥ‬ ‫‪instances‬‬ ‫ﻭﺃﻤﺜﺎل‬ ‫‪class‬‬ ‫‪ .Programming‬ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﻬﻲ ﺘﻌﺘﻤﺩ ﻋﻠﻰ ﺍﻟﺼﻔﻭﻑ‬ ‫)‪Language‬‬

‫ﻫﺫﻩ ﺍﻟﺼﻔﻭﻑ ﻨﺩﻋﻭﻫﺎ ﺃﻏﺭﺍﺽ ‪ .object‬ﻭﻴﻤﻜﻥ ﺇﻋﺎﺩﺓ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺼﻔﻭﻑ ﻭﺘﻭﺴـﻴﻌﻬﺎ ﻟﺘﻌﺭﻴـﻑ‬
‫ﺼﻔﻭﻑ ﺠﺩﻴﺩﺓ )ﻤﺒﺩﺃ ﺍﻟﻭﺭﺍﺜﺔ ‪ .(Inheritance‬ﺃﺭﺍﺩﺕ ﺠﺎﻓﺎ ﺃﻥ ﺘﻜﻭﻥ ﻏﺭﻀﻴﺔ ﺍﻟﺘﻭﺠـﻪ ﺨﺎﻟـﺼﺔ‪،‬‬
‫ﺍﻟﻤﻌﺭﻭﻓﺔ‪ ،‬ﻓﻜل ﻨﺹ ﺒﺭﻤﺠﻲ ﻓﻲ ﺠﺎﻓﺎ ﻴﺠﺏ ﺃﻥ ﻴﻨﺘﻤـﻲ ﺒﺎﻟـﻀﺭﻭﺭﺓ ﺇﻟـﻰ‬ ‫‪Smalltalk‬‬ ‫ﻤﺜل ﻟﻐﺔ‬
‫ﺼﻑ‪ .‬ﻭﺒﻤﻌﻨﻰ ﺩﻗﻴﻕ ﺤﺎﻭﻟﺕ ﺃﻥ ﺘﺠﻌل ﺠﻤﻴﻊ ﺃﻨﻭﺍﻉ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺃﻏﺭﺍﻀﹰﺎ ﻤﻥ ﺼﻔﻭﻑ‪ .‬ﻭﻟﻜﻥ ﻫﺫﺍ‬
‫ﻗﺩ ﻴﺸﻜل ﻁﺭﻴﻘ ﹶﺔ ﺘﻌﺎﻤل ﺼﻌﺒﺔ ﺃﻭ ﻏﻴﺭ ﻤﺄﻟﻭﻓﺔ ﻤﻊ ﺃﻨﻤﺎﻁ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺒﺴﻴﻁﺔ ﻭﺨﺼﻭﺼﹰﺎ ﺍﻟﻌﺩﺩﻴﺔ‪.‬‬
‫‪(primitive‬‬ ‫)‪types‬‬ ‫ﻭﻫﻨﺎ ﻴﺄﺘﻲ ﺍﻟﺨﻴﺎﺭ ﺍﻟﻤﻭﻓﻕ ﻟﺠﺎﻓﺎ ﺒﺘﺭﻙ ﻤﺠﻤﻭﻋﺔ ﺃﻨﻤﺎﻁ ﺍﻟﻤﻌﻁﻴـﺎﺕ ﺍﻟﺒـﺴﻴﻁﺔ‬
‫‪class‬‬ ‫ﻜﻤﺎ ﻫﻭ ﺍﻟﺤﺎل ﻓﻲ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻘﻠﻴﺩﻴﺔ‪ ،‬ﻭﺠﻌل ﻜل ﻤﺎ ﻋﺩﺍ ﺫﻟﻙ ﻫﻭ ﻨﻤﻁ ﻤﻌﻁﻴـﺎﺕ ﺼـﻑ )‬
‫‪.(type‬‬

‫‪ .4‬ﻁﻘﻡ ﻤﻁﻭﱢﺭ ﺠﺎﻓﺎ‬

‫ﻜﺎﻓﺔ ﺍﻟﺼﻔﻭﻑ ﺍﻟﻼﺯﻤﺔ ﻟﺘﻁﻭﻴﺭ ﺒـﺭﺍﻤﺞ‬ ‫)‪(JDK: Java Developer's Kit‬‬ ‫ﻴﺘﻀﻤﻥ ﻁﻘﻡ ﻤﻁﻭ‪‬ﺭ ﺠﺎﻓﺎ‬
‫ﺠﺎﻓﺎ‪ ،‬ﻤﻭﺯﻋ ﹰﺔ ﻓﻲ ﺤﺯﻡ ﺒﺭﻤﺠﻴﺔ ﻗﻴﺎﺴﻴﺔ‪ ،‬ﻭﻫﺫﻩ ﺍﻟﺼﻔﻭﻑ ﻤﺨﺯﻨﺔ ﻋﻠﻰ ﺸﻜل ﻤﻠﻔﺎﺕ ﻤﻥ ﻨﻭﻉ ‪.class‬‬
‫ﻟﻌﺩﺩ ﻻ ﺒﺄﺱ ﺒﻪ ﻤﻥ ﺍﻟﺼﻔﻭﻑ‪.‬‬ ‫)‪(source code‬‬ ‫ﻤﻊ ﻤﻠﻔﺎﺕ ﺍﻟﺘﺭﻤﻴﺯ ﺍﻷﺼﻠﻲ‬
‫ﺃﻴﻀﹰﺎ ﻤﺠﻤﻭﻋ ﹶﺔ ﺍﻷﺩﻭﺍﺕ ﺍﻟﻀﺭﻭﺭﻴﺔ ﻟﺘﺭﺠﻤﺔ ﻭﺘﻨﻔﻴﺫ ﻭﺍﺨﺘﺒﺎﺭ ﻫﺫﻩ ﺍﻟﺒﺭﺍﻤﺞ‪ ،‬ﺒﺎﻹﻀﺎﻓﺔ‬ ‫‪JDK‬‬ ‫ﻭﻴﺘﻀﻤﻥ‬
‫ﺇﻟﻰ ﺒﻴﺌﺔ ﺘﻨﻔﻴﺫ ﺠﺎﻓﺎ ﺍﻟﺘﻲ ﺘﻘﻭﻡ ﺒﺘﺸﻐﻴل ﺍﻟﺒﺭﺍﻤﺞ ﻀﻤﻥ ﺍﻵﻟﺔ ﺍﻻﻓﺘﺭﺍﻀﻴﺔ‪.‬‬

‫ﻫﻭ ﻤﺘﺭﺠﻡ ﻟﻐﺔ ﺠﺎﻓﺎ ﺍﻟﺫﻱ ﻴﺘﺭﺠﻡ ﻤﻠﻔﺎﺕ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻨﺼﻴﺔ ﻤﻥ ﻨـﻭﻉ ‪ ،java‬ﻭﻴﻭﻟـﺩ‬ ‫‪javac‬‬ ‫ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫( ﻟﻐﺔ ﺍﻵﻟﺔ ﺍﻻﻓﺘﺭﺍﻀﻴﺔ‪ ،‬ﺍﻟﺫﻱ ﺴﻴﺘﻡ‬ ‫)‪bytecode‬‬ ‫ﺘﺤﺘﻭﻱ ﺘﺭﻤﻴﺯ ﺠﺎﻓﺎ‬ ‫‪class‬‬ ‫ﺒﺎﻟﻤﻘﺎﺒل ﻤﻠﻔﺎﺕ ﻤﻥ ﻨﻭﻉ‬
‫ﺍﻟﺫﻱ ﻴﻘﻭﻡ ﺒﺘﻨﻔﻴﺫ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻲ ﻭﻟﺩﻫﺎ ﺍﻟﻤﺘﺭﺠﻡ‪ .‬ﻫﻨـﺎﻙ‬ ‫‪java‬‬ ‫ﺘﻨﻔﻴﺫﻩ ﻻﺤﻘﹰﺎ‪ .‬ﻫﺫﻩ ﻫﻲ ﻤﻬﻤﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫ﺃﻴﻀﺎ ﺃﺩﺍﺓ ﻫﺎﻤﺔ ﺠﺩﹰﺍ ﺘﺴﺘﺨﺩﻡ ﻟﻸﺭﺸﻔﺔ ﻭﻫﻲ ‪ ،jar‬ﻭﺘﺴﺘﺨﺩﻡ ﻷﺭﺸـﻔﺔ ﻤﻠﻔـﺎﺕ ﺍﻟـﺼﻔﻭﻑ‪ .‬ﺍﻷﺩﺍﺓ‬
‫ﻭﺘﺴﻤﺢ ﺒﺘﻭﻟﻴﺩ ﻤﻠﻑ ﺍﻟﺘﻭﺼﻴﻑ ﻭﺍﻟﺘﻭﺜﻴﻕ ﺍﻟﺨﺎﺹ ﺒﻭﺍﺠﻬﺔ ﺒﺭﻤﺠﺔ ﺠﺎﻓﺎ‬ ‫‪javadoc‬‬ ‫ﺍﻷﺨﺭﻯ ﺍﻟﻬﺎﻤﺔ ﻫﻲ‬
‫)‪.(java API‬‬

‫‪ .5‬ﺍﻟﻨﺴﺦ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻤﻥ ﺠﺎﻓﺎ‬

‫ﺘﻁﻭﺭﺕ ﺠﺎﻓﺎ ﻋﺒﺭ ﺜﻼﺙ ﻨﺴﺦ ﺃﺴﺎﺴﻴﺔ ﻤﻥ ﻁﻘﻡ ﺍﻟﺘﻁﻭﻴﺭ‪:‬‬

‫‪1.0‬‬ ‫ﺍﻟﻌﺎﻡ ‪ - 1995‬ﺍﻟﻨﺴﺨﺔ‬ ‫‪y‬‬


‫‪lang, io, applet, awt, net, util‬‬ ‫ﻭﺘﺤﺘﻭﻱ ﺤﺯﻡ ﺍﻟﺼﻔﻭﻑ ﺍﻷﺴﺎﺴﻴﺔ ﺍﻟﺴﺘﺔ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬

‫‪1.1‬‬ ‫ﺍﻟﻌﺎﻡ ‪ - 1997‬ﺍﻟﻨﺴﺨﺔ‬ ‫‪y‬‬


‫ﻭﻓﻴﻬﺎ ﺘﻀﺎﻋﻔﺕ ﻤﻜﺘﺒﺔ ﺍﻟﺼﻔﻭﻑ‪ ،‬ﻭﺃﻀﻴﻔﺕ ﺘﺤﺴﻴﻨﺎﺕ ﺒل ﻭﺇﻋﺎﺩﺓ ﺼـﻴﺎﻏﺔ ﻓـﻲ ﺒﻌـﺽ ﺍﻷﻤـﻭﺭ‬
‫ﻭﺨﺼﻭﺼﹰﺎ ﻭﺍﺠﻬﺎﺕ ﺍﻟﺘﻔﺎﻋل ﻤﻊ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻭﻤﻌﺎﻟﺠﺔ ﺃﺤﺩﺍﺜﻬﺎ )ﺍﻟﺤﺯﻤﺔ‪.(awt.event :‬‬

‫‪1.2‬‬ ‫ﺍﻟﻌﺎﻡ ‪ - 1998‬ﺍﻟﻨﺴﺨﺔ‬ ‫‪y‬‬


‫ﺃﻴﻀ ﹰﺎ ﺒﺎﺴﻡ ‪ .java2‬ﻭﻋﺩﺩ ﺼﻔﻭﻑ ﻓﻴﻬﺎ ﻴﺘﺠﺎﻭﺯ ﺜﻼﺙ ﺃﻀﻌﺎﻑ ﺍﻟﻨﺴﺨﺔ‬ ‫‪1.2‬‬ ‫ﻭﺘﻌﺭﻑ ﺍﻟﻨﺴﺨﺔ‬
‫)ﻭﻓﻴﻬﺎ ﻤﺎ ﻴﺯﻴﺩ ﻋﻥ ‪ 1600‬ﺼﻑ(‪.‬‬ ‫‪1.1‬‬

You might also like