Effective Java Programming. efficient software development



Similar documents
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

System Structures. Services Interface Structure

Effective Java Programming. measurement as the basis

An Easier Way for Cross-Platform Data Acquisition Application Development

CS 3530 Operating Systems. L02 OS Intro Part 1 Dr. Ken Hoganson

PHP vs. Java. In this paper, I am not discussing following two issues since each is currently hotly debated in various communities:

Chapter 2 System Structures

PERFORMANCE ENHANCEMENTS IN TreeAge Pro 2014 R1.0

1. Overview of the Java Language

Java Application Development using Eclipse. Jezz Kelway Java Technology Centre, z/os Service IBM Hursley Park Labs, United Kingdom

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

Chapter 1 Fundamentals of Java Programming

Chapter 3: Operating-System Structures. Common System Components

The Design of the Inferno Virtual Machine. Introduction

Fastboot Techniques for x86 Architectures. Marcus Bortel Field Application Engineer QNX Software Systems

Toad for Oracle 8.6 SQL Tuning

What s Cool in the SAP JVM (CON3243)

Full and Para Virtualization

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

How To Manage An Sap Solution

Chapter 3 Operating-System Structures

Java Garbage Collection Basics

Best Practices for Deploying SSDs in a Microsoft SQL Server 2008 OLTP Environment with Dell EqualLogic PS-Series Arrays

Java in Education. Choosing appropriate tool for creating multimedia is the first step in multimedia design

Jonathan Worthington Scarborough Linux User Group

INTRODUCTION TO JAVA PROGRAMMING LANGUAGE

Virtual Computing and VMWare. Module 4

Virtual Machines.

FlashSoft Software from SanDisk : Accelerating Virtual Infrastructures

Chapter 12 Programming Concepts and Languages

Example of Standard API

STM32JAVA. Embedded Java Solutions for STM32

Cloud Computing. Adam Barker

Performance Management for Cloudbased STC 2012

General Introduction

Introducing Performance Engineering by means of Tools and Practical Exercises

Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

JRuby Now and Future Charles Oliver Nutter JRuby Guy Sun Microsystems

Latte Rapid Application Development. William Dunlap Product Manager Borland International

Chapter 13: Program Development and Programming Languages

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Research and Design of Universal and Open Software Development Platform for Digital Home

Performance Monitoring and Tuning. Liferay Chicago User Group (LCHIUG) James Lefeu 29AUG2013

Multi-core Programming System Overview

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Operating System Structures

Mobile Operating Systems. Week I

Restraining Execution Environments

Informatica Ultra Messaging SMX Shared-Memory Transport

CS5460: Operating Systems. Lecture: Virtualization 2. Anton Burtsev March, 2013

An Oracle White Paper July Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide

Kernel Types System Calls. Operating Systems. Autumn 2013 CS4023

IDL. Get the answers you need from your data. IDL

Mark Bennett. Search and the Virtual Machine

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

Online Recruitment System 1. INTRODUCTION

XpoLog Center Suite Log Management & Analysis platform

WEBLOGIC ADMINISTRATION

OWB Users, Enter The New ODI World

9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software?

OKLAHOMA SUBJECT AREA TESTS (OSAT )

Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc.

Equalizer. Parallel OpenGL Application Framework. Stefan Eilemann, Eyescale Software GmbH

Parallels Virtuozzo Containers

1/20/2016 INTRODUCTION

Integrated Open-Source Geophysical Processing and Visualization

Introduction to Android

ILOG JRules Performance Analysis and Capacity Planning

Mobile Devices - An Introduction to the Android Operating Environment. Design, Architecture, and Performance Implications

This presentation will provide a brief introduction to Rational Application Developer V7.5.

Performance Comparison of Fujitsu PRIMERGY and PRIMEPOWER Servers

Data Sheet VISUAL COBOL WHAT S NEW? COBOL JVM. Java Application Servers. Web Tools Platform PERFORMANCE. Web Services and JSP Tutorials

Initial Hardware Estimation Guidelines. AgilePoint BPMS v5.0 SP1

The Hotspot Java Virtual Machine: Memory and Architecture

Software: Systems and. Application Software. Software and Hardware. Types of Software. Software can represent 75% or more of the total cost of an IS.

A lap around Team Foundation Server 2015 en Visual Studio 2015

Mobile Performance Testing Approaches and Challenges

Performance Analysis of Web based Applications on Single and Multi Core Servers

Eclipse Visualization and Performance Monitoring

Intel DPDK Boosts Server Appliance Performance White Paper

farmerswife Contents Hourline Display Lists 1.1 Server Application 1.2 Client Application farmerswife.com

Java and Real Time Storage Applications

Mission-Critical Java. An Oracle White Paper Updated October 2008

Mobile Application Languages XML, Java, J2ME and JavaCard Lesson 04 Java

Best Practices for Monitoring Databases on VMware. Dean Richards Senior DBA, Confio Software

HEP data analysis using jhepwork and Java

Eloquence Training What s new in Eloquence B.08.00

Replication on Virtual Machines

A Modular Approach to Teaching Mobile APPS Development

Transcription:

Effective Java Programming efficient software development

Structure efficient software development what is efficiency? development process profiling during development what determines the performance of applications in Java

Motto "More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason - including blind stupidity" William Allan Wulf

What is efficiency? speed = efficiency? what influences the performance evaluation: performance memory requirements (RAM footprint) run time scalability subjective perception of performance different priorities on client and server side

Computational performance this "performance" to most users key aspects: choice of algorithm choice of data structures number of instructions to perform truly high-performing application needs to take other factors besides calculations into account

Memory requirements amount of memory consumed can significantly affect performance important factors whether the application forces the OS to paging (drastic drop in performance) amount of memory in target environment efficient absorption of resources (your application is not alone)

Program start time affect the subjective assessment of performance most significant for client applications packaging (JAR applets) architecture with lazy loading plugins (eg Eclipse) control class loading differences in the modes of the virtual machine client - quick start server - code optimization

Scalability determines how the system works when stressed in a poorly scalable system as the load increases, performance decreases dramatically truly scalable systems are more resistant to increased load eg text editor when opening 5 or 5000 pages performance should be measured at the planned load of the system scalability examples

Subjective performance impression users do not measure time with a stopwatch - they feel more important is how fast a program seems to be rather then it actually is critically important to GUI reaction time and response time reduction of response time tricks screens change the cursor progress bars rapidly changing subtitles

Efficient software development process work on productivity is not limited to a single step must be part of the whole production plan can not be confined only to the coding decent analysis and design are the key without a good analysis you do not create a good design without good design you will not achieve good performance code optimizations alone are not enough

Efficient software development process basic OOSD process has four main phases: analysis designing coding testing capacity planning requires one more: profiling for use in any OOSD process

Analysis defines what and how the system is doing abstracts from low-level issues as: programming language, syntax data Structures classes, methods It includes: requirements analysis definition of system boundaries creation of a use case model

Analysis vs. performance system requirements that affect performance: minimum configuration (RAM, CPU) recommended configuration (RAM, CPU) link speed (network) other applications running on the system performance requirements: response times at a given load boot-time reaction time specific (ie, the number of frames per second during teleconference)

Analysis vs. performance system boundaries knowledge of what the system will not do can open many possibilities of optimization use case model defines the prototypes that should be created to measure performance omission of performance in the analysis phase how do you know that the system is fast enough?

Designing object-oriented design has a number of factors affecting the quality of the solutions encapsulation is critical in terms of performance worsens performance (stack grows), but... facilitates testing of many algorithms, the choice of the best and the amendment of the existing ones improves maintenance

Coding code has an obvious impact on performance very similar codes can often have huge differences in performance many attempts to optimize the code are bad for the compiler not where it is needed

Testing checks whether the system meets the quality and performance requirements performance testing is based on: checking whether the requirements are met comparing alternative solutions tests can be performed on individual modules quickly determine the limits of performance system will not run faster than its parts

Profiling often the system does not meet performance requirements you should make changes a common mistake is to focus on performance irrelevant parts reason - poor conditions solution - profiling

Profiling where are the bottlenecks in your application? profiling is to identify the components consuming the most resources specialized tools are designed for this task allows you to identify parts of the system needing most changes know what changes will bring the greatest benefits

What determines efficiency in Java The overall performance of applications in Java depends on: application project execution speed of Java code speed of the native libraries speed of hardware and operating system JVM is responsible only for execution speed and has code optimization mechanisms JIT (Just In Time) - compilation of code before executing HotSpot - continuous code compilation at runtime You can not speed up native calls I/O, graphic generation, GUI, DB

Conclusions what affects the evaluation of performance? how to make the system appear to be faster? in which the phases of software development performance should be taken into account? what is the relationship between analysis and performance? what are the advantages of profiling?