You are on page 1of 54

‫برنامه نویسی پیشرفته‬

‫نیمسال دوم ‪99-98‬‬


‫برنامه نویسی پیشرفته‬

‫مدرس‪ :‬مهدی عمادی‬


‫مقدمه‬

‫‪ Java ‬ی کزبانب رنامه ن ویسیمستقل‬


‫از س کویاجرا است‬
‫‪ ‬در سال ‪ 1991‬توسط شرکت ‪Sun‬‬
‫‪ Microsystems‬پیشنهاد شد‬
‫‪ C ‬ی کزبانب رنامه ن ویسیب ا امکانات‬
‫مناسبب رایدسترسیب ه س طوح‬
‫پ ایینس یستمها و مدیریتمستقیم س خت‬
‫افزار‬
‫‪ Java ‬زبانیمناسبب رایب رنامه های‬
‫ب زرگو پ یچیده ب ه خصوصت حت‬
‫ش بکه و اینترنت‬
‫کتاب برنامه نویسی‬
Head First Java, Second
Edition, Kathy Sierra and
Bert Bates, O'Reilly
Media, 2003
‫کتاب برنامه نویسی‬
JAVA how to program,
Seventh Edition, Deitel &
Deitel, 2007
‫کتاب برنامه نویسی‬
Java How To Program
(Early Objects) 10th
Edition, Deitel & Deitel,
2014
Thinking in Java, 4th
Edition,  Bruce Eckel,
Prentice Hall, 2006
‫کتاب برنامه نویسی‬
Code Complete, Second
Edition,
Steve McConnell,
Microsoft Press, 2004.
‫‪‬استفاده به عنوان‪:‬‬
‫کالینت برنامه های وب (‪ 5 )Applet‬درصد‬ ‫‪‬‬

‫برنامه عادی (‪ 45 )Desktop Application‬درصد‬ ‫‪‬‬

‫سرور (‪ 50 )servlets/JSP/EJB‬درصد‬ ‫‪‬‬


‫?‪Java is Cross-Platform‬‬

‫‪‬برنامه ‪ java‬در یک کامپیوتر با داشتن یک کامپایلر تولید می شود‬


‫‪‬بایت کد تولید شده یک فایل است که با انتقال به هر سخت افزار و هر‬
‫سیستم عاملی که ماشین مجازی جاوا را دارد اجرا خواهد بود‬

‫‪Java‬‬ ‫‪Java Bytecode‬‬


‫‪Source Code‬‬
‫‪JIT Compiler‬‬
‫‪Compiler‬‬ ‫‪or Interpreter‬‬
‫)‪(javac‬‬
‫‪Java Bytecode‬‬ ‫‪Execution‬‬

‫‪Compile Time‬‬ ‫‪Run Time‬‬

‫زمان کامپایل‬ ‫زمان اجرا‬


Instructions in Assembly and Machine Language
High-Level Assembly-Machine Code
Evolution of Programming Languages

High-level languages make programming easier


Closer to spoken languages
Examples
 Basic
 FORTRAN
 COBOL
 C/C++
 Java
‫‪Object-Oriented Programming‬‬

‫‪‬برنامه نویسی شی گرا یک ایده کامل برای پیاده سازی برنامه های‬
‫کامپیوتری است‬

‫‪‬جاوا یک زبان کامل برای ایده برنامه نویسی شی گرا می باشد‬


Java is Simple?

Truth: Java greatly simplifies several


language features
 Java has automatic memory management
 Does Windows and takes out the garbage
 No dangling pointers. No memory leaks.
 A problem for real-time programs
 Java simplifies pointer handling
 No explicit reference/dereference operations
 Everything is a pointer (like Lisp)
 No makefiles
 No header files
 C++ syntax streamlined
Java is Powerful?

Myth: Java will increase programmer


productivity for all applications by XXX%.
Myth: Java will kill C++
Myth: All software should be written in Java
 Unix utilities: C
 Small/medium Windows-only programs: Visual Basic
 String parsing: Perl
 High-performance, single-platform OO systems: C++
 Air traffic control, aircraft flight software: Ada
 Knowledge-based systems: Lisp/CLOS/Prolog
High-Level Languages
17
Java Virtual Machine
18
Compile and Execution Stages
19

Compare to
C++ and
Assembly
.NET
Framework
Basic Hello World Application

“Application” is Java lingo for a stand-alone Java


program
 Note that the class name and the filename must match
 A file can contain multiple classes, but only one can be
declared public, and that one’s name must match the filename

File HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world.");
}
}
Basic Hello World Application (Continued)

Compiling:
javac HelloWorld.java

Running:
java HelloWorld

Output:
Hello, world.
Command Line Arguments

File ShowArgs.java:

public class ShowArgs {


public static void main(String[] args) {
for(int i=0; i<args.length; i++) {
System.out.println("Arg " + i +
" is " + args[i]);
}
}
}
Command Line Arguments, Results

Compiling and Running:

> javac ShowArgs.java

> java ShowArgs fee fie foe fum


Arg 0 is fee
Arg 1 is fie
Arg 2 is foe
Arg 3 is fum
Basic Hello WWW Applet

File HelloWWW.java:
import java.applet.Applet;
import java.awt.*;

public class HelloWWW extends Applet {


public void init() {
setBackground(Color.gray);
setForeground(Color.white);
setFont(new Font("SansSerif", Font.BOLD, 30));
}

public void paint(Graphics g) {


g.drawString("Hello, World Wide Web.", 5, 35);
//5=left, 35=bottom
}
}
Basic Hello WWW Applet (Continued)

File HelloWWW.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>HelloWWW: Simple Applet Test.</TITLE>
</HEAD>

<BODY>
<H1>HelloWWW: Simple Applet Test.</H1>

<APPLET CODE="HelloWWW.class" WIDTH=400 HEIGHT=40>


<B>Error! You must use a Java enabled browser.</B>
</APPLET>

</BODY>
</HTML>
Basic Hello WWW Applet (Continued)

Compiling:
javac HelloWWW.java

Running:
Load HelloWWW.html in a Java-enabled browser
Customizing Applets with PARAM
import java.applet.Applet;
import java.awt.*;
public class Message extends Applet {
private int fontSize;
private String message;
public void init() {
setBackground(Color.black);
setForeground(Color.white);
fontSize = getSize().height - 10;
setFont(new Font("SansSerif", Font.BOLD, fontSize));
// Read heading message from PARAM entry in HTML.
message = getParameter("MESSAGE");
}
public void paint(Graphics g) {
if (message != null)
g.drawString(message, 5, fontSize+5);
}
}
Customizing Applets with PARAM, cont.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


<HTML>
<HEAD>
<TITLE>The Message Applet</TITLE>
</HEAD>
<BODY BGCOLOR="WHITE">
<H1>The <CODE>Message</CODE> Applet</H1>
<P>
<APPLET CODE="Message.class" WIDTH=325 HEIGHT=25>
<PARAM NAME="MESSAGE" VALUE="Tiny">
<B>Sorry, these examples require Java</B>
</APPLET>
<P>
<APPLET CODE="Message.class" WIDTH=325 HEIGHT=50>
<PARAM NAME="MESSAGE" VALUE="Small">
<B>Sorry, these examples require Java</B>
</APPLET>
...
</BODY>
</HTML>
Customizing Applets with PARAM, Result
Requirements for the Course

Browse-to-download: Java SE JDK 6 latest update for


Windows Platform http://java.sun.com/ make sure to
Accept License Agreement
Install JDK (use defaults)
Browse-to-and-download: NetBeans IDE 6.5 IDE with
Java SE update ? Bundle http://www.netbeans.org/
make sure to Accept License Agreement
install NetBeans (use defaults)
IntelliJ IDEA 6.0
Eclipse - IBM Rational Developer - Jdeveloper -
Jbuilder - etc.
NOTEPAD !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Evolution of Programming Languages

 Compiler: a program that translates a program


written in a high-level language into the
equivalent machine language
 In the case of Java, this machine language is the bytecode
 Java Virtual Machine (JVM): hypothetical
computer developed to make Java programs
machine independent
Problem-Analysis-Coding-Execution Cycle
First Cup of Java

A Step by step example on how to


 Create
 Compile
 Run a java program
 Plus the works

What is a Programming Language


What is Object Orientation
First Java Program

 Does and Don'ts


 Java Environment
 A Simple Program that Displays Hello World
 Create the Program

 Compile the Program

 Load and Run the Program


First Java Program
The Do not(s)

Do Not Use the Desktop or “My Documents” as a folder


for your java programs

Always Use the Letter Drive as your Root (A, C, D, etc.)

Java Does not Like Spaces in File Names or Folder


Names

Java is case Sensitive


 the string hello.Java is not the same as Hello.java
First Java Program

Start a DOS Commands window


Start  Run  cmd
First Java Program
Command Prompt Window
First Java Program
Create the Appropriate folders
Which Java Environment are you running
javac is not recoginzed: it is not in my path
Search your drive for the latest JDK
Hardwire the path to point to the bin folder
Hardwire the path to point to the bin folder
java and javac are both recognizable
Where is my First Java Program
Remember: java is case sensetive
Where is my First Java Program
edit and save to the Homeworks folder
Where is my First Java Program
Use the dir command: 228 Bytes
My First Java Program
Comments

Java is case sensitive


File name extension is .java (Lower case)

Class Name in public class HelloWorld


Should exactly match the first part of the filename
HelloWorld.java

A runnable Java Program is a Java class with a method


called:
public static void main(String[] args){
//Control Flow Code
}
Compiling My First Java Program
javac Helloworld.java
Helloworld.class is created
Compiling My First Java Program
Where did HelloWorld.class come from
Running My First Java Program
java Helloworld
Try this
HelloWorld.java program
Create, compile and run

//
// My First Java Program
//our Info
//
//

import javax.swing.*;
public class HelloWorld{
public static void main(String[] args){
try{
String s = JOptionPane.showInputDialog("Please Enter your Name");
System.out.println("Hello " + s);
System.out.print(" Welcome to CIS at WTAMU");
}
catch(Exception e){

}
}
}
Summary
My J2SE Environment Install Environment
Java 2 Standard Edition Components
http://java.sun.com/javase/6/docs/

Java Language Java Language

java javac javadoc apt jar javap JPDA jconsole


Tools &
Tool APIs
Security Int'l RMI IDL Deploy Monitoring Troubleshoot Scripting JVM TI

Deployment
Deployment Java Web Start Java Plug-in
Technologies

AWT Swing Java 2D


User Interface
Toolkits
Accessibility Drag n Drop Input Methods Image I/O Print Service Sound
JDK
Integration TM TM
IDL JDBC JNDI RMI RMI-IIOP Scripting
Libraries
Java
JRE Beans Intl Support I/O JMX JNI Math SE
Other Base API
Libraries
Networking Override Mechanism Security Serialization Extension Mechanism XML JAXP

lang and util Collections Concurrency Utilities JAR Logging Management


lang and util
Base Libraries
Preferences API Ref Objects Reflection Regular Expressions Versioning Zip Instrument

Java Virtual TM TM
Java Hotspot Client VM Java Hotspot Server VM
Machine
TM
Platforms Solaris Linux Windows Other
JRE consists of the following components:

1- Deployment technologies, including deployment, Java Web Start and Java


Plug-in.
2- User interface toolkits, including Abstract Window Toolkit (AWT), Swing,
Java 2D,Accessibility, Image I/O, Print Service, Sound, drag and drop (DnD) and
input methods.

3- Integration libraries, including Interface Definition Language (IDL), Java


Database Connectivity (JDBC), Java Naming and Directory Interface (JNDI),
Remote Method Invocation (RMI), Remote Method Invocation Over Internet
Inter-Orb Protocol (RMI-IIOP) and scripting.

4- Other base libraries, including international support, input/output (I/O),


extension mechanism, Beans, Java Management Extensions (JMX), Java Native
Interface (JNI), Math, Networking, Override Mechanism, Security, Serialization
and Java for XML Processing (XML JAXP).

5- Lang and util base libraries, including lang and util, management, versioning,
zip, instrument, reflection, Collections, Concurrency Utilities, Java Archive
(JAR), Logging, Preferences API, Ref Objects and Regular Expressions.

6- Java Virtual Machine (JVM), including Java HotSpot Client and Server Virtual
Machines.

You might also like