1 / 26

Software Development Foundations, 1/12/12

Software Development Foundations, 1/12/12. J. Yates Monteith , Clemson University. Introductions. Welcome! Who am I? Why am I here? Why should you be listening to me? Syllabus Aside on cheating. Introduction to Java Introduction to Eclipse Write Programs Time. Who am I?.

tyanne
Download Presentation

Software Development Foundations, 1/12/12

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Development Foundations, 1/12/12 J. Yates Monteith, Clemson University

  2. Introductions • Welcome! • Who am I? • Why am I here? • Why should you be listening to me? • Syllabus • Aside on cheating. • Introduction to Java • Introduction to Eclipse • Write Programs Time

  3. Who am I? • J. Yates Monteith, M.S. • You can call me Yates or Mr. Monteith. Either. I Don’t care. • Advisor: Dr. John McGregor • Education: • B.S. Computer Science, Manhattan College 2008 • (Go Jaspers!) • M.S. Computer Science, Clemson University 2010 • (Go Tigers!) • Ph.D. Computer Science, Clemson University 20…15? • Interests: • Music, Software Product Lines, Software Ecosystems, Software Engineering, Writing Code. • Favorite Languages: C++, PHP, Java. In that order.

  4. Why Should You Listen To Me? • Past Experience • CPSC 111 Teaching Assistant (2008) – 3 Sections • CPSC 120 Teaching Assistant (2009) – 3 Sections • CPSC 215 Teaching Assistant (2010) – 2 Sections • CPSC 215 Guest Lecturer (2010) – 2 Lectures • CPSC 215 Guest Lecturer (2011) – 2 Lectures • CPSC 372 Substitute (2009-2011) • CPSC 871 Substitute (2011) • CPSC 875 Substitute (2010-2011)

  5. More on Me… • So I’ve got a little bit of experience. • If you want more info, check my C.V. and Resume on my website.

  6. Syllabus • http://www.cs.clemson.edu/~jymonte/docs/cpsc215s12/syllabus.pdf

  7. About This Course… • Software Engineering • Software Development is just a small part of Software Engineering. • We will be learning the principles and activities that lead to good software development. • Class and Module Design • Design Patterns for reusable functionality • Testing • Cross Language

  8. More about this course… • Java is the The Language. • No other substitutes allowed. • Why? • Java is great for a wide range of development projects and topics. • Has a thriving tools community that develops tools and super tools to make certain activities much easier (re: testing). • Java is Object Oriented with less attention to detail than C++. • Also, Java Runtime, Virtual Machine-platform independence, etc…

  9. So what about Java? • Released in 1995 by Sun, developed by James Gosling. • Now owned by Oracle • General Purpose language focused on OO programming. • General Purpose in that it can do anything any other language can do. Why Java then? • Often described as: Simple, OO, Distributed, Multithreaded, Dynamic, Portable, Architecture Neutral, Robust, Secure, etc… • Highly portable because of Byte Code, the JVM and the Java Runtime Library…

  10. Byte Code and the JVM • The JVM is the Java Virtual Machine. • It’s a virtual machine in which Java Code is executed. • Developed by Sun, it is multi-platform, multi-architecture. Anything can run it. • Java utilizes this through compiling to Java Byte Code. • In C/C++, we compile down to assembly code which is highly architecture dependent. • The assembler then translates the assembly code to machine code, which is even more architecture dependent. • In Java, we compile down to Java Byte code which is then interpreted by the Java Virtual Machine.

  11. Byte Code and the JVM

  12. Byte Code and the JVM • Why is this a great idea? • What do we gain from this? • What do we lose from this? Cited from [1]

  13. Byte Code and the JVM • Why is this a great idea? • It means that we only need to write a Virtual Machine for all targeted architectures, instead of a translator that takes Byte Code to machine code for each processor architecture and type • What do we gain from this? • What do we lose from this?

  14. Byte Code and the JVM • Why is this a great idea? • It means that we only need to write a Virtual Machine for all targeted architectures, instead of a translator that takes Byte Code to machine code for each processor architecture and type • What do we gain from this? • Portability! Duh. We can run a Java program with very little setup on any computer that can run the JVM. • What do we lose from this?

  15. Byte Code and the JVM • Why is this a great idea? • It means that we only need to write a Virtual Machine for all targeted architectures, instead of a translator that takes Byte Code to machine code for each processor architecture and type • What do we gain from this? • Portability! Duh. We can run a Java program with very little setup on any computer that can run the JVM. • What do we lose from this? • Performance. Because optimization relies heavily on architecture specific features, and the JVM is architecture-neutral, we cannot exploit those features for better performance.

  16. The Java Runtime • Computer Science eschews reinventing the wheel. • Think libraries: stdio.h, stdlib.h, STL Library, etc… • Java does the same thing, but bigger and better. • The Java Runtime Library. • Large and Robust set of libraries for doing just about anything you want to do in Java. • No more writing Linked Lists. • Common to all JVM installations. Guaranteed portable between same versions.

  17. Syntax • Much like C/C++ syntax: • Semicolon after every line. • All basic control statements (if, if-else, for, while, do while, switch). • All basic data types (int, char, float, double, bool) • Bracket Block Structuring • Comments • // Single line comments • /* Multi-line comments */ • /** Documentation comments */

  18. Semantics • Slightly different semantics with respect to… • Pass by value and pass by reference • Inheritance and Generics • Templating • And more stuff… • But we’ll get to that stuff later… For now: Eclipse.

  19. Introduction to Eclipse and IDEs • What is an IDE? • Integrated Development Environment. Text (usually) editing application with built in functionality specifically for programming, usually focusing on a specific language. • Better than command-line / text-pad programming. • Akin to the difference between cooking with electricity and cooking without electricity. (Think Eggbeaters). • Will make life easier, will make programming easier.

  20. What is Eclipse? • Eclipse is a plug-in based IDE managed by the Eclipse Foundation. • Provides robust set of tools for programming (primarily) in Java. Includes code highlighting, organization, completion, refactoring. • Plug-in architecture allows users to create their own tools to extend functionality. Includes testing, profiling, modeling and more. • Free. Open Source. State of the art. • I do not require that you use Eclipse; however, I do require that all assignments be submitted as exported Eclipse projects.

  21. More on Eclipse • Platform independent • Because it is written in Java! • Can be obtained here: www.eclipse.org • Note on Windows: Requires no installation. Completely registry independent. Can drag-and-drop between different installations of same-versioned Windows.

  22. Lets write Hello World! • Time to go to Eclipse…

  23. Discussion • Every application is encapsulated in a class. That class must contain a main function. • That function must be implemented by public static void main(String[] args) • Public – It is a public function of the class. Anybody with access to the class can call it. • Static – Exists only as a single function across all scopes that have access to it. • Void – Java does not explicitly pass a return value from main(). • (String[] args) – Array of Strings containing command line arguments. Why no argc?

  24. Time for more programs…?

  25. Homework • Over the weekend, install Java, install Eclipse and write Hello World. • No turn in necessary.

  26. References • [1] Java Tutorials. http://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html

More Related