Javafx 2.0 Dr

Total Page:16

File Type:pdf, Size:1020Kb

Javafx 2.0 Dr 1 <Insert Picture Here> JavaFX 2.0 Dr. Stefan Schneider Chief Technologist ISV Engineering The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 3 JavaFX 2.0 Agenda • Overview <Insert Picture Here> • Details • Architecture • Roadmap 4 What is JavaFX? 5 JavaFX is the evolution of the Java rich client platform, designed to address the needs of today’s and tomorrow’s customers. 6 Who is JavaFX for? 7 Target Developers • Current Java Developers • Former Java Developers • Web Developers • New Developers 8 What makes JavaFX special? 9 JavaFX defines itself as being a well designed, cross platform application development platform. It is fast. It is flexible. It delivers exceptional value to developers and end users. It is competitive. Most importantly, it leverages the massive existing Java eco system. Nobody else offers the complete package – exceptional developer experience, user experience, cross platform development and massive ecosystem. 10 TIOBE Index Popularity of a Language 11 The Java Eco System • Over 9 million Java developers • Java is taught in universities around the globe • Every major company uses Java 12 Value Proposition for Client Java • Leverage existing Java investment • Easier to find and train developers • Reduce risk by reducing complexity 13 Why is JavaFX important? 14 JavaFX encourages companies to use Java on the client and the server. A strong and vibrant client platform retards the growth of competing technologies in enterprise server rooms. JavaFX provides a compelling end-to-end Java solution for enterprises and competes well with other technologies. 15 How about some examples? 16 Demo: Graphics 17 18 19 Details 20 Programming Languages • Java is our primary programming language – Release Java APIs for all of JavaFX – Expose JavaFX Binding, Sequences as Java APIs • Embrace all JVM languages – JRuby, Jython, Scala, Groovy, … – JavaScript • JavaFX Script compiler will not be updated to work with JavaFX 2.0 APIs – Existing JavaFX Script based applications will continue to run 21 APIs and Programming Model • Continuation from JavaFX 1.X product line – We are quite pleased with the scene graph and event model – Most APIs will simply be ported directly to Java – Some APIs will be revisited (e.g. layout) – Existing Controls will all be ported • Embrace more web technology – Update JavaFX CSS to include more from CSS 3 (eventually to be fully spec compliant) – * Use WAI-ARIA for accessibility API – * Make HTML available for rich text in all Text nodes 22 API Design • Hire the best – We’re actively hiring, visit the booth, see me for more info – We have a very good team, good environment, good development methodology, building a great platform! • API Usability Studies – Inflict our APIs on unsuspecting volunteers – Observe their reactions • Release Early Access, Beta builds to partners – Join the JavaFX Partner Program for access to builds • Build blueprints, samples, demos in parallel – Nothing vets an API like building applications 23 Workflows • Developer oriented workflow – Developers write application, produce UI – Use a RAD tool to produce forms apps quickly – Import graphics from Illustrator & Photoshop – Designers style UI using CSS • Designer oriented workflow – Designer produces graphics using professional tools – Developers produce modules (e.g. access web services) – Designer aggregates graphics & code modules & scripts it together using JavaScript or another dynamic language 24 Web Integration • Embed HTML in JavaFX – WebView node in the scene graph is embedded browser – Allow all Text nodes to have HTML content – Seamless DOM integration • Embed JavaFX in HTML – Using traditional plugin technology – Seamless DOM integration – Adapt to use HTML 5 local storage, browser history, etc • Adopt more web standard – CSS, Accessibility, HTML for rich text, … 25 Graphics • 2D and 3D scene graph • Hardware accelerated pipeline – DirectX 9 on Windows XP, Windows Vista – DirectX 11 on Windows 7 – OpenGL on Mac, Linux, Embedded – Software (Java2D) when necessary • Embed in Swing – c.f. Java3D, JOGL – Allows Swing applications to add JavaFX scenes, charts, media, and controls • High Definition Media 26 Controls • Simple, Rich, Useful • High customizable via CSS • Visually appealing • Complete out-of-the-box • Work well with data binding • Work well with tools 27 Performance • Small & fast – Measure static & dynamic footprint, and reduce both – Measure startup time & reduce it – Measure FPS, CPU, GPU for many graphics scenarios – Aggressively refactor making things small and fast • Measure, measure, measure – Engineers write performance tests – Measured on multiple platforms & configurations continuously – Write competitive performance benchmarks for everything we find. You write a blog with a benchmark, we try to compete. 28 Architecture 29 Basic Architecture Developers program to Java & JavaFX APIs the JavaFX APIs. Toolkit Operating system / hardware specific implementations of the platform. Most of this code Graphics is reusable between Pipeline operating systems, but portions of it must be Windowing ported. Target the OS and Hotspot. Plugin based HotSpot / Operating System usage also includes talking to a Browser. 30 Major JavaFX Scene Graph APIs Full set of rich UI controls for a productive Customizable, easy to out of the box Controls Charts use charts. experience. Scenegraph provides convenient programming model for graphical and Scene Graph business applications Super flexible timeline Scenegraph has built-in based animations, support for drag & drop Drag & Drop Animations animating along a path, and simple transitions Support for mouse, Colors, linear and radial keyboard, touch, and Input Events Paints gradients, texture paints input method events Full 2D and 3D Blurs, reflections, drop transforms such as shadows, glows, inner Effects Transforms rotations, translations, shadows, and more and scaling 31 Major JavaFX APIs Local storage for storing Local Storage user data offline, both for desktop and web apps Simple yet powerful threading libraries built on a single reusable Tasks (threading) Task API Web services, database Data Services services, file services, etc 32 Prism Toolkit • Next-generation hardware accelerated graphics – Support OpenGL ES 2, DirectX 9, DirectX 11 – DirectX used on Windows due to superiority of drivers – Falls back to Java2D for software rendering as needed • Full 3D supported for OpenGL and DirectX – Some 3D such as transforms supported with software pipe • Uses next-generation “Glass” library for windowing 33 Prism Toolkit Architecture Diagram Java & JavaFX APIs Prism Toolkit Prism Render Tree Java2D DirectX OGL Glass 34 Deployment Scenarios Ad-hoc Native WebStart Applet Application Application Application Application Jars Jars Jars Jars Launch with Turn into shell script or native Create JNLP Create JNLP executable Jar executable Launch OS Deliver over Embed in web specific WebStart page executable 35 Roadmap 36 JavaFX 2.0 Product Timeline CYQ1 2011 CYQ2 2011 CYQ3 2011 JavaFX 2.0 EA JavaFX 2.0 Beta JavaFX 2.0 GA (Early Access) (General Availability) 37 JavaFX 2.0 Roadmap See http://javafx.com/roadmap for the latest up-to-date roadmap Targets of Opportunity Early Access Beta General Availability • Port JavaFX Script APIs to Java • Multithreading Improvements • Dynamic Footprint Improvements • JavaFX Binding APIs • Focus Management • Static Footprint Improvements • Sequence, Observable List • 3D Transitions • Improved Startup Performance • Hardware Accelerated Graphics • 3D Transforms for 2D Systems • Updated Public Benchmarks • High Performance Transitions • 3D Vector Math • Blueprints & Samples • Triangle • Redesigned Layout Container API • Synch’d Media & Animations • Texture Paint • Grid Layout Container • Prism Capable Plugin • High-def Media • HTML DOM • Rich Text • WebView • CSS Animations • WebEngine & WebSource • TableView Control • Low Latency Audio • SplitView Control • Full Screen Video • TabView Control • Programmatic Media Markers • MediaPlayer Control 38 Q & A 39 40 41.
Recommended publications
  • Desktop Migration and Administration Guide
    Red Hat Enterprise Linux 7 Desktop Migration and Administration Guide GNOME 3 desktop migration planning, deployment, configuration, and administration in RHEL 7 Last Updated: 2021-05-05 Red Hat Enterprise Linux 7 Desktop Migration and Administration Guide GNOME 3 desktop migration planning, deployment, configuration, and administration in RHEL 7 Marie Doleželová Red Hat Customer Content Services [email protected] Petr Kovář Red Hat Customer Content Services [email protected] Jana Heves Red Hat Customer Content Services Legal Notice Copyright © 2018 Red Hat, Inc. This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
    [Show full text]
  • Rich Internet Applications
    Rich Internet Applications (RIAs) A Comparison Between Adobe Flex, JavaFX and Microsoft Silverlight Master of Science Thesis in the Programme Software Engineering and Technology CARL-DAVID GRANBÄCK Department of Computer Science and Engineering CHALMERS UNIVERSITY OF TECHNOLOGY UNIVERSITY OF GOTHENBURG Göteborg, Sweden, October 2009 The Author grants to Chalmers University of Technology and University of Gothenburg the non-exclusive right to publish the Work electronically and in a non-commercial purpose make it accessible on the Internet. The Author warrants that he/she is the author to the Work, and warrants that the Work does not contain text, pictures or other material that violates copyright law. The Author shall, when transferring the rights of the Work to a third party (for example a publisher or a company), acknowledge the third party about this agreement. If the Author has signed a copyright agreement with a third party regarding the Work, the Author warrants hereby that he/she has obtained any necessary permission from this third party to let Chalmers University of Technology and University of Gothenburg store the Work electronically and make it accessible on the Internet. Rich Internet Applications (RIAs) A Comparison Between Adobe Flex, JavaFX and Microsoft Silverlight CARL-DAVID GRANBÄCK © CARL-DAVID GRANBÄCK, October 2009. Examiner: BJÖRN VON SYDOW Department of Computer Science and Engineering Chalmers University of Technology SE-412 96 Göteborg Sweden Telephone + 46 (0)31-772 1000 Department of Computer Science and Engineering Göteborg, Sweden, October 2009 Abstract This Master's thesis report describes and compares the three Rich Internet Application !RIA" frameworks Adobe Flex, JavaFX and Microsoft Silverlight.
    [Show full text]
  • Sun Glassfish Enterprise Server V3 Scripting Framework Guide
    Sun GlassFish Enterprise Server v3 Scripting Framework Guide Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. Part No: 820–7697–11 December 2009 Copyright 2009 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. All rights reserved. Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in the product that is described in this document. In particular, and without limitation, these intellectual property rights may include one or more U.S. patents or pending patent applications in the U.S. and in other countries. U.S. Government Rights – Commercial software. Government users are subject to the Sun Microsystems, Inc. standard license agreement and applicable provisions of the FAR and its supplements. This distribution may include materials developed by third parties. Parts of the product may be derived from Berkeley BSD systems, licensed from the University of California. UNIX is a registered trademark in the U.S. and other countries, exclusively licensed through X/Open Company, Ltd. Sun, Sun Microsystems, the Sun logo, the Solaris logo, the Java Coffee Cup logo, docs.sun.com, Enterprise JavaBeans, EJB, GlassFish, J2EE, J2SE, Java Naming and Directory Interface, JavaBeans, Javadoc, JDBC, JDK, JavaScript, JavaServer, JavaServer Pages, JMX, JRE, JSP,JVM, MySQL, NetBeans, OpenSolaris, SunSolve, Sun GlassFish, ZFS, Java, and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. or its subsidiaries in the U.S. and other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the U.S. and other countries.
    [Show full text]
  • (Cont'd) Current Trends
    Scripting vs Systems Programming Languages (cont’d) Designed for gluing Designed for building Does application implement complex algorithms and data applications : flexibility applications : efficiency structures? Does application process large data sets (>10,000 items)? Interpreted Compiled Are application functions well-defined, fixed? Dynamic variable creation Variable declaration If yes, consider a system programming language. Data and code integrated : Data and code separated : meta-programming cannot create/run code on Is the main task to connect components, legacy apps? supported the fly Does the application manipulate a variety of things? Does the application have a GUI? Dynamic typing (typeless) Static typing Are the application's functions evolving rapidly? Examples: PERL, Tcl, Examples: PL/1, Ada, Must the application be extensible? Python, Ruby, Scheme, Java, C/C++, C#, etc Does the application do a lot of string manipulation? Visual Basic, etc If yes, consider a scripting language. cs480 (Prasad) LSysVsScipt 1 cs480 (Prasad) LSysVsScipt 2 Current Trends Jython (for convenient access to Java APIs) Hybrid Languages : Scripting + Systems Programming I:\tkprasad\cs480>jython – Recent JVM-based Scripting Languages Jython 2.1 on java1.4.1_02 (JIT: null) Type "copyright", "credits" or "license" for more information. »Jython : Python dialect >>> import javax.swing as swing >>> win = swing.JFrame("Welcome to Jython") »Clojure : LISP dialect >>> win.size = (200, 200) »Scala : OOP +Functional Hybrid >>> win.show()
    [Show full text]
  • Amazon Codeguru Profiler
    Amazon CodeGuru Profiler User Guide Amazon CodeGuru Profiler User Guide Amazon CodeGuru Profiler: User Guide Copyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved. Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored by Amazon. Amazon CodeGuru Profiler User Guide Table of Contents What is Amazon CodeGuru Profiler? ..................................................................................................... 1 What can I do with CodeGuru Profiler? ......................................................................................... 1 What languages are supported by CodeGuru Profiler? ..................................................................... 1 How do I get started with CodeGuru Profiler? ................................................................................ 1 Setting up ......................................................................................................................................... 3 Set up in the Lambda console ..................................................................................................... 3 Step 1: Sign up for AWS ....................................................................................................
    [Show full text]
  • Enrico Rubboli
    Enrico Rubboli Contact Information Mobile UK: +44 741 4734233 Mobile IT: +39 349 8083244 E-mail: [email protected] Website: http://rubbo.li Personal Citizenship: Italian Information Gender: Male Date of Birth: 1976 October 27th Profile I'm a Senior Software Engineer with experience in several fields of web development. Switched to Ruby few years ago I can now boast several successful projects delivered. I'm currently searching for a new interesting opportunity in the fintech field. • 6 years of experience in Ruby and Rails • 14 years of overall experience as Web Developer • 14 years of experience in UNIX/networking/security • worked for the last 7 years with english speaking companies Technical Skills OS: GNU Linux (debian/arch), FreeBSD, OSX Programming: Ruby, Java, PHP, Perl, Bash/Zsh, C, Go lang Web & frameworks: Ruby on Rails, Sinatra, Symfony (PHP), JBoss (Java) and Torquebox (Jruby) TDD: JUnit, Rspec, Cucumber, Test:Unit Agile: Scrum, Pair Programming, XP Admins: Managing availability, scalability and efficiency of distributed systems, docker Networking: Firewalls (iptables/ipfw), IPsec, SSL, HTTP etc. Professional Experience Bitfinex - iFinex INC, Feb 2016 - present Role: Senior Software Engineer { Working in a very small team. { Different architectures and languages, in particular GoLang - Ruby and NodeJS. { Built the development environment on docker Company info: http://bitfinex.com - Hong Kong Burnside Digital Inc, Nov 2013 - Feb 2016 Role: Senior Software Engineer { Building apps using ruby on rails, nodeJS, AngularJS and Faye. { Assisting the sales team during the estimation process. { Leader of the web team Company info: http://burnsidedigital.com - Portland, OR, USA 1 of 2 Digital Science, Oct 2012 - Nov 2013 Role: Senior Software Engineer { Member of the central team.
    [Show full text]
  • A Post-Apocalyptic Sun.Misc.Unsafe World
    A Post-Apocalyptic sun.misc.Unsafe World http://www.superbwallpapers.com/fantasy/post-apocalyptic-tower-bridge-london-26546/ Chris Engelbert Twitter: @noctarius2k Jatumba! 2014, 2015, 2016, … Disclaimer This talk is not going to be negative! Disclaimer But certain things are highly speculative and APIs or ideas might change by tomorrow! sun.misc.Scissors http://www.underwhelmedcomic.com/wp-content/uploads/2012/03/runningdude.jpg sun.misc.Unsafe - What you (don’t) know sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE // Unsafe mechanics private static final sun.misc.Unsafe U; private static final long QBASE; private static final long QLOCK; private static final int ABASE; private static final int ASHIFT; static { try { U = sun.misc.Unsafe.getUnsafe(); Class<?> k = WorkQueue.class; Class<?> ak = ForkJoinTask[].class; example: QBASE = U.objectFieldOffset (k.getDeclaredField("base")); java.util.concurrent.ForkJoinPool QLOCK = U.objectFieldOffset (k.getDeclaredField("qlock")); ABASE = U.arrayBaseOffset(ak); int scale = U.arrayIndexScale(ak); if ((scale & (scale - 1)) != 0) throw new Error("data type scale not a power of two"); ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); } catch (Exception e) { throw new Error(e); } } } sun.misc.Unsafe
    [Show full text]
  • Input for Winforms
    ComponentOne Input for WinForms ComponentOne, a division of GrapeCity 201 South Highland Avenue, Third Floor Pittsburgh, PA 15206 USA Website: http://www.componentone.com Sales: [email protected] Telephone: 1.800.858.2739 or 1.412.681.4343 (Pittsburgh, PA USA Office) Trademarks The ComponentOne product name is a trademark and ComponentOne is a registered trademark of GrapeCity, Inc. All other trademarks used herein are the properties of their respective owners. Warranty ComponentOne warrants that the media on which the software is delivered is free from defects in material and workmanship, assuming normal use, for a period of 90 days from the date of purchase. If a defect occurs during this time, you may return the defective media to ComponentOne, along with a dated proof of purchase, and ComponentOne will replace it at no charge. After 90 days, you can obtain a replacement for the defective media by sending it and a check for $2 5 (to cover postage and handling) to ComponentOne. Except for the express warranty of the original media on which the software is delivered is set forth here, ComponentOne makes no other warranties, express or implied. Every attempt has been made to ensure that the information contained in this manual is correct as of the time it was written. ComponentOne is not responsible for any errors or omissions. ComponentOne’s liability is limited to the amount you paid for the product. ComponentOne is not liable for any special, consequential, or other damages for any reason. Copying and Distribution While you are welcome to make backup copies of the software for your own use and protection, you are not permitted to make copies for the use of anyone else.
    [Show full text]
  • Characteristics of Dynamic JVM Languages
    Characteristics of Dynamic JVM Languages Aibek Sarimbekov Andrej Podzimek Lubomir Bulej University of Lugano Charles University in Prague University of Lugano fi[email protected] [email protected]ff.cuni.cz fi[email protected] Yudi Zheng Nathan Ricci Walter Binder University of Lugano Tufts University University of Lugano fi[email protected] [email protected][email protected] Abstract However, since the JVM was originally conceived for The Java Virtual Machine (JVM) has become an execution a statically-typed language, the performance of the JVM platform targeted by many programming languages. How- and its JIT compiler with dynamically-typed languages is ever, unlike with Java, a statically-typed language, the per- often lacking, lagging behind purpose-built language-specific formance of the JVM and its Just-In-Time (JIT) compiler JIT compilers. Making the JVM perform well with various with dynamically-typed languages lags behind purpose-built statically- and dynamically-typed languages clearly requires language-specific JIT compilers. In this paper, we aim to significant effort, not only in optimizing the JVM itself, but contribute to the understanding of the workloads imposed on also, more importantly, in optimizing the bytecode-emitting the JVM by dynamic languages. We use various metrics to language compiler, instead of just relying on the original JIT characterize the dynamic behavior of a variety of programs to gain performance [8]. This in turn requires that developers written in three dynamic languages (Clojure, Python, and of both the language compilers and the JVM understand the Ruby) executing on the JVM. We identify the differences characteristics of the JVM workloads produced by various with respect to Java, and briefly discuss their implications.
    [Show full text]
  • Ola Bini Computational Metalinguist [email protected] 698E 2885 C1DE 74E3 2CD5 03AD 295C 7469 84AF 7F0C
    JRuby For The Win Ola Bini computational metalinguist [email protected] http://olabini.com/blog 698E 2885 C1DE 74E3 2CD5 03AD 295C 7469 84AF 7F0C onsdag 12 juni 13 Logistics and Demographics onsdag 12 juni 13 LAST MINUTE DEMO onsdag 12 juni 13 JRuby Implementation of the Ruby language Java 1.6+ 1.8.7 and 1.9.3 compatible (experimental 2.0 support) Open Source Created 2001 Embraces testing Current version: 1.7.4 Support from EngineYard, RedHat & ThoughtWorks onsdag 12 juni 13 Why JRuby? Threading Unicode Performance Memory Explicit extension API and OO internals Libraries and legacy systems Politics onsdag 12 juni 13 InvokeDynamic onsdag 12 juni 13 JRuby Differences Most compatible alternative implementation Native threads vs Green threads No C extensions (well, some) No continuations No fork ObjectSpace disabled by default onsdag 12 juni 13 Simple JRuby onsdag 12 juni 13 Java integration Java types == Ruby types Call methods, construct instances Static generation of classes camelCase or snake_case .getFoo(), setFoo(v) becomes .foo and .foo = v Interfaces can be implemented Classes can be inherited from Implicit closure conversion Extra added features to Rubyfy Java onsdag 12 juni 13 Ant+Rake onsdag 12 juni 13 Clojure STM onsdag 12 juni 13 Web onsdag 12 juni 13 Rails onsdag 12 juni 13 Sinatra onsdag 12 juni 13 Trinidad onsdag 12 juni 13 Swing Swing API == large and complex Ruby magic simplifies most of the tricky bits Java is a very verbose language Ruby makes Swing fun (more fun at least) No consistent cross-platform GUI library for Ruby
    [Show full text]
  • Javafx in Action by Simon Morris
    Covers JavaFX v1.2 IN ACTION Simon Morris SAMPLE CHAPTER MANNING JavaFX in Action by Simon Morris Chapter 1 Copyright 2010 Manning Publications brief contents 1 ■ Welcome to the future: introducing JavaFX 1 2 ■ JavaFX Script data and variables 15 3 ■ JavaFX Scriptcode and structure 46 4 ■ Swing by numbers 79 5 ■ Behind the scene graph 106 6 ■ Moving pictures 132 7 ■ Controls,charts, and storage 165 8 ■ Web services with style 202 9 ■ From app to applet 230 10 ■ Clever graphics and smart phones 270 11 ■ Best of both worlds: using JavaFX from Java 300 appendix A ■ Getting started 315 appendix B ■ JavaFX Script: a quick reference 323 appendix C ■ Not familiar with Java? 343 appendix D ■ JavaFX and the Java platform 350 vii Welcome to the future: introducing JavaFX This chapter covers ■ Reviewing the history of the internet-based application ■ Asking what promise DSLs hold for UIs ■ Looking at JavaFX Script examples ■ Comparing JavaFX to its main rivals “If the only tool you have is a hammer, you tend to see every problem as a nail,” American psychologist Abraham Maslow once observed. Language advocacy is a popular pastime with many programmers, but what many fail to realize is that programming languages are like tools: each is good at some things and next to useless at others. Java, inspired as it was by prior art like C and Smalltalk, sports a solid general-purpose syntax that gets the job done with the minimum of fuss in the majority of cases. Unfortunately, there will always be those areas that, by their very nature, demand something a little more specialized.
    [Show full text]
  • Rapid Prototyping for Virtual Environments
    Old Dominion University ODU Digital Commons Electrical & Computer Engineering Theses & Dissertations Electrical & Computer Engineering Winter 2008 Rapid Prototyping for Virtual Environments Emre Baydogan Old Dominion University Follow this and additional works at: https://digitalcommons.odu.edu/ece_etds Part of the Computer Sciences Commons, and the Electrical and Computer Engineering Commons Recommended Citation Baydogan, Emre. "Rapid Prototyping for Virtual Environments" (2008). Doctor of Philosophy (PhD), Dissertation, Electrical & Computer Engineering, Old Dominion University, DOI: 10.25777/pb9g-mv96 https://digitalcommons.odu.edu/ece_etds/45 This Dissertation is brought to you for free and open access by the Electrical & Computer Engineering at ODU Digital Commons. It has been accepted for inclusion in Electrical & Computer Engineering Theses & Dissertations by an authorized administrator of ODU Digital Commons. For more information, please contact [email protected]. RAPID PROTOTYPING FOR VIRTUAL ENVIRONMENTS by Emre Baydogan B.S. June 1999, Marmara University, Turkey M.S. June 2001, Marmara University, Turkey A Dissertation Submitted to the Faculty of Old Dominion University in Partial Fulfillment of the Requirement for the Degree of DOCTOR OF PHILOSOPHY ELECTRICAL AND COMPUTER ENGINEERING OLD DOMINION UNIVERSITY December 2008 Lee A. Belfore, H (Director) K. Vijayan Asari Jesmca R. Crouch ABSTRACT RAPID PROTOTYPING FOR VIRTUAL ENVIRONMENTS Emre Baydogan Old Dominion University, 2008 Director: Dr. Lee A. Belfore, II Development of Virtual Environment (VE) applications is challenging where appli­ cation developers are required to have expertise in the target VE technologies along with the problem domain expertise. New VE technologies impose a significant learn­ ing curve to even the most experienced VE developer. The proposed solution relies on synthesis to automate the migration of a VE application to a new unfamiliar VE platform/technology.
    [Show full text]