SlideShare a Scribd company logo
Java: It's better than you think, for reasons you haven't realized you already know.  William Grosso Chair, Emerging Technology SIG SDForum
In this talk, the speaker will draw upon his past experience as chair of SDForum's Java SIG ( www.sdforum.org/sigs/java ) and his current role as the chair of SDForum's Emerging Technology SIG ( www.sdforum.org/sigs/emerging ) to explain why beginning and intermediate programmers should learn Java, why most (practical) software innovations over the next few years will involve programs written in Java, and why programmers using Java-based systems are going to reinvent the internet over the next 5 years.
About the Speaker Masters in Mathematics, U.C. Berkeley Currently: Vice President of Technical Services, Hipbone Incorporated Author Java RMI (O’Reilly and Associates) Java Enterprise Best Practices (O’Reilly and Associates) Working on a book about the Globus Project
More Importantly Chaired SDForum’s Java SIG for 3 years Current chair of SDForum’s Emerging Technology SIG http://www.sdforum.org/sigs/java http://www.sdforum.org/sigs/emerging

Recommended for you

Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed

JRebel is a tool that allows Java developers to see changes to code instantly without redeploying applications. It eliminates lengthy redeploys, allowing developers to test incremental changes quickly and spend more time on coding, debugging, and collaborating. JRebel supports over 90 frameworks and allows remote debugging and deploying code changes to servers from a local machine. By removing redeploys, JRebel helps developers work more efficiently and productively.

Pair Programming
Pair ProgrammingPair Programming
Pair Programming

This document provides an overview of pair programming and discusses its benefits. It defines pair programming as two developers working together at one computer, with one typing code as the "driver" and the other reviewing the work and providing feedback as the "navigator". Research has found that pair programming can result in 15% fewer bugs and slightly better design quality compared to solo work. Benefits include improved learning, quality, focus, motivation and morale. The document also covers challenges, tips, and different pairing patterns like driver-navigator and ping-pong pairing.

programmingpairagile
Basics of Computer Coding: Understanding Coding Languages
Basics of Computer Coding: Understanding Coding LanguagesBasics of Computer Coding: Understanding Coding Languages
Basics of Computer Coding: Understanding Coding Languages

This document provides an overview of basics of computer coding and programming languages. It discusses the importance of coding and different types of coding environments like apps, websites, and programs. It then covers common coding terms like variables, arrays, operators, and flow control. It also discusses different programming languages like Python, PHP, CSS, Java, and resources for learning coding like Codecademy. The document aims to help people understand coding, types of code, and "building block" languages to achieve their coding goals.

codeprogrammingschool
The Point of this Talk I want to convince you of two things That Java, or some language like it, is inevitable from a technological point of view That Java itself is inevitable from a social point of view. I want to avoid using the traditional technology or “computer science” based arguments
DISCLAIMER : Most of this is not Mine Shamelessly stealing from Marc Fleury, Dick Gabriel, Paul Graham, Bill Joy, Peter Norvig, Todd Proebsting, Joel Spolsky, and others. Follow the URLs and do google searches.
Evaluating a Programming Language
Typical Arguments Lisp is better than Java because Java doesn’t support tail recursion very well (or Lisp has better macros or …) C++ is better than Java because it compiles to native  code and will always be faster C++ is better than Java because you can allocate memory using the stack– it’s way more efficient My language has a preprocessor and yours doesn’t.

Recommended for you

Developers survival-guide
Developers survival-guideDevelopers survival-guide
Developers survival-guide

This document provides an overview of 11 programming trends that are changing how developers work: 1. The Java Virtual Machine (JVM) is being used by many languages beyond just Java through cross-compilation, like Ruby, Scala, and Groovy. 2. Similarly, JavaScript is being used beyond just JavaScript through languages that cross-compile to JavaScript like Google Web Toolkit (GWT) and CoffeeScript. 3. There is a rise in "walled gardens" or tightly controlled development platforms like Apple's App Store and Facebook apps that limit developers' freedom. 4. Code is increasingly being developed as modules or snippets that integrate into frameworks rather than standalone programs, challenging traditional notions of ownership

web design and developmentsoftware development
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering

Software craftsmanship and software engineering both aim to deliver high-quality, reliable software, but differ in their approaches. Software engineering focuses on macro goals and processes, while craftsmanship emphasizes mastering skills through experience. Both are used at Groupon, where engineering practices like architecture, testing and iteration are combined with craftsmanship techniques including apprenticeships and pair programming.

software craftsmanshipsoftware engineering
Why Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For AllWhy Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For All

Golang is a sure shot choice for the quick server response and predictable business growth let's see how golang is better than python, rust and node.js.

golangpythonrust
Typical Arguments are Boring There are lots of “language arguments” that are based on some artifact of the implementation or algorithms Usually these boil down to “X is better than Y because I’m used to X” Often these reflect a lack of understanding of the programming process Everyone’s engaged in them, of course
Arguments Based on Program Speed are Particularly Silly Intel has solved this problem already My home machine has a gig of RAM and a 2GHZ processor So does yours (or it will soon) What’s the difference between 2 milliseconds and 4 milliseconds? This generalizes to resource consumption
Paul Graham 2. Speed Comes from Profilers.   Language designers, or at least language implementers, like to write compilers that generate fast code. But I don't think this is what makes languages fast for users. Knuth pointed out long ago that speed only matters in a few critical bottlenecks. And anyone who's tried it knows that you can't guess where these bottlenecks are. Profilers are the answer. Language designers are solving the wrong problem. Users don't need benchmarks to run fast. What they need is a language that can show them what parts of their own programs need to be rewritten. That's where speed comes from in practice. So maybe it would be a net win if language implementers took half the time they would have spent doing compiler optimizations and spent it writing a good profiler instead. http://www.paulgraham.com/langdes.html
Counterargument (Norvig) “Mainframe Economics” Google has 15,000 Linux boxes A factor of two  matters  here.  In fact, Google uses: A custom build of Linux A carefully defined hardware platform C++ and “inner loops written in assembly”

Recommended for you

What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?

This document discusses considerations for choosing the best programming language for a web product based on different use cases and business needs. It outlines several common cases such as classic CRUD web portals, real-time applications, machine learning, and blockchain and recommends languages like PHP, Ruby, Node.js, Python, Go, and Elixir based on the technical requirements. The key takeaway is that there is no single best language and business goals should dictate the tools based on factors like human resources, ecosystem, and scalability.

programmingwebphp
Gsm library for proteus the engineering projects
Gsm library for proteus   the engineering projectsGsm library for proteus   the engineering projects
Gsm library for proteus the engineering projects

This document introduces a GSM library for the Proteus simulation software. It provides instructions for downloading and installing the library files, which contain a model of the SIM900D GSM module. Basic AT commands are supported to test communication with the module in Proteus. The author notes plans to expand the library with additional modules, commands, and interfacing examples. An upgrade added SMS sending functionality.

Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development

This document provides an overview of the CS 361 Software Engineering course. It outlines attendance rules, instructors, required coursebooks, and key topics that will be covered including Agile development methodologies, Waterfall methodology, the Agile Manifesto, enabling technologies for Agile development, pair programming, user stories, system metaphors, on-site customers, and more. The document aims to introduce students to the structure and content of the course.

pair programmingpythonagile manifesto
CounterCounterArgument (Graham) Back in 1995, we knew something that I don't think our competitors understood, and few understand even now: when you're writing software that only has to run our your own servers, you can use any language you want. When you're writing desktop software, there's a strong bias toward writing applications in the same language as the operating system. Ten years ago, writing applications meant writing applications in C.  But with Web-based software, especially when you have the source code of both the language and the operating system, you can use whatever language you want.   If you can use any language, which do you use? We chose Lisp. For one thing, it was obvious that rapid development would be important in this market. We were all starting from scratch, so a company that could get new features done before its competitors would have a big advantage.  We knew Lisp was a really good language for writing software quickly, and server-based applications magnify the effect of rapid development, because you can release software the minute it's done.  http://lib1.store.vip.sc5.yahoo.com/lib/paulgraham/sec.txt
Acceptable Technical Arguments  Memory management (“managed code”) Scriptability / The existence of a well-defined interpreted environment Changeability– the ability to change program behavior in radical ways without restarting the program or otherwise disrupting existing users.
Memory Management I'll go out on a limb here. In my years of experience, I have seen many language and programming fads come and go. But there's only ONE, that's right, ONE language feature I've ever seen that actually improves your productivity significantly. No, it's not object oriented programming; no, it's not intentional programming or assertions or programming by example or CASE or UML or XML or Java. The only thing that improves your programming productivity is using  managed code  - that is, using a language in which memory management is automatic. Java and .NET languages do this with garbage collection; VB does this with reference counting; I don't care how you do it, just let me concatenate strings without thinking about where the new bigger string will go and I'll be happy.  http://www.joelonsoftware.com/printerFriendly/articles/fog0000000006.html
Scriptability Ability to quickly test pieces of code in an interpreted environment Perl, Python, and Lisp have this. Almost all startups use at least one of these for “quick and dirty” code I prefer Python; your mileage may vary

Recommended for you

Importance of the quality of code
Importance of the quality of codeImportance of the quality of code
Importance of the quality of code

Good quality code is an essential property of a software because it could lead to financial losses or waste of time needed for further maintenance, modification or adjustments if code quality is not good enough.

code qualitycharacteristics of good quality codeprogramming
PhoneGap: a brief history and apologia
PhoneGap: a brief history and apologiaPhoneGap: a brief history and apologia
PhoneGap: a brief history and apologia

A presentation for HackReactor on PhoneGap, a history of the project. The slides provide backdrop to the talk, and do not contain all the material discussed.

phonegapcordovaopensource
Computer programming
Computer programmingComputer programming
Computer programming

Computer programming is a process that leads from an original problem formulation to executable programs. It involves writing instructions in a programming language that a computer can understand. While it is talked about widely now due to computing's role in everyday life, non-software companies also see value in people understanding programming for tasks like modeling, professional communication, and custom software development using languages like C and Python. For those new to programming, the presenter recommends starting with choosing an editor, exploring a language through simple programs, thinking through problems by designing solutions on paper, and then coding the designs. The path forward may involve fields like web development, systems programming, networking, or scientific computing.

Changeability Ability to change software on the fly, in a controlled fashion Not so important on desktops Very important in web applications
Graham on Changeability 3. What Do You Need for Server-Based Software?   I think a lot of the most exciting new applications that get written in the next twenty years will be Web-based applications, meaning programs that sit on the server and talk to you through a Web browser. And to write these kinds of programs we may need some new things. One thing we'll need is support for the new way that server-based apps get released. Instead of having one or two big releases a year, like desktop software, server-based apps get released as a series of small changes. You may have as many as five or ten releases a day. And as a rule everyone will always use the latest version. You know how you can design programs to be debuggable? Well, server-based software likewise has to be designed to be changeable. You have to be able to change it easily, or at least to know what is a small change and what is a momentous one.
That’s All Good Stuff
The Biggest Open Problem In Programming Languages Increasing Programmer Productivity Write programs correctly Write programs quickly Write programs easily Why? Decreases support cost Decreases development cost Decreases time to market Increases satisfaction http://research.microsoft.com/~toddpro/papers/disruptive.ppt

Recommended for you

Professional Software Development, Practices and Ethics
Professional Software Development, Practices and EthicsProfessional Software Development, Practices and Ethics
Professional Software Development, Practices and Ethics

The document discusses professional software development practices and ethics. It begins by showing code for hacking into a system using SSH and resetting the root password. It then discusses disabling grid nodes in a system. The rest of the document discusses the experience and background of Lemi Orhan Ergin, a senior software engineer, including his education and work history. It also provides an agenda for a presentation on how to become an ethical software developer, covering topics like waterfall development, Agile development, software craftsmanship practices, ethics in software engineering, and ethics in development.

ethicssoftware developmentscrum
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote

The document discusses the state of JavaScript and opportunities for its responsible use. It encourages learning JavaScript properly rather than copying code without understanding. It argues against workarounds for browser issues and urges focusing on standards compliance. Updating tools and libraries, removing legacy code, and embracing modern JavaScript features like those in ES6 can help address past issues and enable further innovation on the web.

javascriptes6abbdevday
The Ring programming language version 1.3 book - Part 81 of 88
The Ring programming language version 1.3 book - Part 81 of 88The Ring programming language version 1.3 book - Part 81 of 88
The Ring programming language version 1.3 book - Part 81 of 88

This document provides documentation for Ring version 1.3. It includes documentation for several Ring classes like QMdiSubWindow, QCursor, QListView, QAxObject, and QUuid. For each class, it lists the class name, a C++ reference link, parent class if applicable, and method signatures. It also includes a section on frequently asked questions about Ring that addresses questions about the motivation and advantages of Ring compared to other languages.

ringring programming languagering programming
What Proebsting Missed Individual Programmer Productivity is important If individual programmers aren’t productive, then the game is over Community Productivity is More Important Bill Joy– “No matter how big and smart your company is, there are more smart guys working outside your company.”
The Big Bold Claim In the world of the future, programs will be increasingly be written by communities  The single best measure of whether a programming language is worth using is: how well does it support communities. The social aspects of the language dominate the technological aspects of the language
Supporting Communities New programmers must be able to get up to speed in the language Platforms to learn the language on must be cheap and plentiful Programmers must be able to use the language on whatever machine they’re using Programmers must be able to understand and reuse each other’s code Old code must survive in a useful form And evolve and improve
Revisiting Language Design Paul Graham’s 5 Principles of Language Design http://www.paulgraham.com/langdes.html 1. Programming Languages Are for People.   Programming languages are how people talk to computers. The computer would be just as happy speaking any language that was unambiguous. The reason we have high level languages is because people can't deal with machine language. The point of programming languages is to prevent our poor frail human brains from being overwhelmed by a mass of detail.

Recommended for you

Specification Of The Programming Language Of Java
Specification Of The Programming Language Of JavaSpecification Of The Programming Language Of Java
Specification Of The Programming Language Of Java

- First generation languages are machine languages that use binary code directly, requiring programmers to manipulate toggle switches to program computers in the 1940s-1950s. This allowed for very efficient execution but made programs difficult to write and fix errors in. - Programming languages have evolved through 5 generations, with each generation bringing programming to a higher level of abstraction and easier use for humans. Early generations used machine language directly while later ones introduced assembly languages, high-level languages, and object-oriented languages. - The passage discusses first generation machine languages as the lowest level, directly using binary for computation on early computers without compilers or assemblers yet. This allowed for

specificationofthe
The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 of 210The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 of 210

- Ring is designed based on a need to develop a new version of the PWCT software. Once completed, PWCT 2.0 will demonstrate software developed using Ring. - Ring aims to advance declarative and natural programming paradigms. Future versions also plan to introduce a new paradigm for network programming and concurrency. - While inspired by languages like Lisp and Smalltalk, Ring's creator designed it to solve problems those languages could not by supporting natural language programming and declarative programming in new practical ways.

ringring programmingring programming language
web development ppt by prakash bedage
web development ppt by prakash bedageweb development ppt by prakash bedage
web development ppt by prakash bedage

Web development involves building and maintaining websites and applications. It has two main parts - front end development and back end development. Front end development involves the visible and user-interactive parts of a website, while back end development involves the behind-the-scenes programming that connects the front end to databases and servers. Key skills for front end developers include HTML/CSS, JavaScript, frameworks, responsive design, version control systems, and testing/debugging tools. Back end skills include programming languages like Java, Python and PHP, knowledge of front end technologies, frameworks, databases, APIs, server handling, data structures and algorithms, problem solving, and communication skills. Both roles are in high demand with average salaries of over $50,000 for

Write Once, Run Anywhere (WORA) One of the original claims behind Java “Write in Java, and it’ll run on any machine that has a JVM” Employee: Hey! Microsoft just changed the Windows API again. Damn  that Evil Monopoly (tm). Our app is crashing !!!!!!  Boss: Hey. Chill out. No problem. Netscape and SUN are porting the  app, even as we speak.
Original WORA Claim is False “write once, debug anywhere” Problems with “native look and feel applications” Java apps don’t quite look like Windows apps Subtle differences in things like threading implementations often mean you have to performance tune on platforms In general, abstractions leak http://www.joelonsoftware.com/articles/LeakyAbstractions.html
WORA Almost Succeeded You can read anyone's code You can figure out what makes sense You can take and adapt whatever works for you A whole new style of programming Write Half, Steal the Rest
WORA Promoted Readability Promoted an active culture of borrowing I’m not claiming I can immediately understand any piece of Java code on the net But I can understand the good ones (and easily) Regardless of the platform the code started out on Interesting test: Go to jakarta.apache.org, look at a checkin, and try to figure out what platform the author was working on You can’t do it

Recommended for you

web development project prakash.pptx
web development project prakash.pptxweb development project prakash.pptx
web development project prakash.pptx

Web development involves building and maintaining websites and applications. It has two main parts - front end development and back end development. Front end development involves the visible and user-interactive parts of a website, while back end development involves the behind-the-scenes programming that connects the front end to databases and servers. Key skills for front end developers include HTML/CSS, JavaScript, frameworks, responsive design, and testing/debugging. Back end skills include languages like Java, Python and PHP, frameworks, databases, APIs, servers, and data structures. Both roles are in high demand with average salaries of ₹4,94,103 for front end and ₹6,50,000 for back end developers in India.

no
Java
JavaJava
Java

Java is an object-oriented programming language that is designed to be platform independent, simple, secure, robust, and highly scalable. It achieves platform independence by using bytecodes that are executed by the Java Virtual Machine, allowing Java programs to run on any device that supports Java without recompilation. Java has become one of the most popular programming languages due to its wide adoption across servers and desktops.

The Ring programming language version 1.5.1 book - Part 173 of 180
The Ring programming language version 1.5.1 book - Part 173 of 180 The Ring programming language version 1.5.1 book - Part 173 of 180
The Ring programming language version 1.5.1 book - Part 173 of 180

- Ring is designed based on a need to develop a new version of the PWCT software. Once completed, PWCT 2.0 will be a large software developed using Ring. - Ring aims to push declarative and natural programming paradigms further. Future versions plan to present a new paradigm for network programming and concurrency based on prototypes. - The documentation discusses reasons for Ring's design decisions like weakly typed features, focus on UI creation, and advantages over other languages like its support for mixing paradigms.

ringring programmingring programming language
WORA Promotes Software Survival Java code will survive. Write today, use next year. Easy to maintain at a fixed level of functionality C++ code, on the other hand, needs new ifdefs for every platform that comes along.
Java Enables Evolution Bad Code Dies Good Code Lives On And is modified And evolves And becomes better
//  Boost compiler configuration selection header file //  (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and //  distribute this software is granted provided this copyright notice appears //  in all copies. This software is provided "as is" without express or implied //  warranty, and with no claim as to its suitability for any purpose. //  See http://www.boost.org for most recent version. // locate which compiler we are using and define // BOOST_COMPILER_CONFIG as needed:  #if defined __GNUC__ //  GNU C++: #  define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp" # elif defined __COMO__ //  Comeau C++ #  define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" #elif defined __KCC //  Kai C++ #  define BOOST_COMPILER_CONFIG "boost/config/compiler/kai.hpp" #elif defined __sgi //  SGI MIPSpro C++ #  define BOOST_COMPILER_CONFIG "boost/config/compiler/sgi_mipspro.hpp" #elif defined __DECCXX //  Compaq Tru64 Unix cxx #  define BOOST_COMPILER_CONFIG "boost/config/compiler/compaq_cxx.hpp" #elif defined __ghs //  Greenhills C++ #  define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp" #elif defined __BORLANDC__ //  Borland #  define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp" #elif defined(__ICL) || defined(__ICC) //  Intel #  define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp" #elif defined  __MWERKS__ //  Metrowerks CodeWarrior #  define BOOST_COMPILER_CONFIG "boost/config/compiler/metrowerks.hpp" #elif defined  __SUNPRO_CC //  Sun Workshop Compiler C++ #  define BOOST_COMPILER_CONFIG "boost/config/compiler/sunpro_cc.hpp" #elif defined __HP_aCC //  HP aCC #  define BOOST_COMPILER_CONFIG "boost/config/compiler/hp_acc.hpp" #elif defined(__MRC__) || defined(__SC__) //  MPW MrCpp or SCpp #  define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp" #elif defined(__IBMCPP__) //  IBM Visual Age #  define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp" #elif defined _MSC_VER //  Microsoft Visual C++ // //  Must remain the last #elif since some other vendors (Metrowerks, for //  example) also #define _MSC_VER #  define BOOST_COMPILER_CONFIG "boost/config/compiler/visualc.hpp" #elif defined (BOOST_ASSERT_CONFIG) // this must come last - generate an error if we don't // recognise the compiler: #  error "Unknown compiler - please configure and report the results to boost.org" #endif www.boost.org This is what highly portable C++ looks like.
WORA == Community Reuse lots of code from different places Very little need to worry about platform dependencies Widespread adoption of coding conventions And large-scale libraries Java programming articles are useful to anyone.  I program on Windows, using an IDE. I get feedback from people using Emacs on Linux. There is no such thing as a C++ programmer.

Recommended for you

Top Programming Languages of 2020
Top Programming Languages of 2020Top Programming Languages of 2020
Top Programming Languages of 2020

The top high-level programming languages are: 1) Python 2) Java 3) JavaScript 4) C++ 5) C# 6) PHP 7) Perl

programmingjavapython
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...

Computer science is the study of principles of how computers work, which leads to computer programming. Computer programming is the process of formulating a computing problem and developing executable programs to solve it. It is important because many everyday devices like Microsoft Word had to be programmed to function. Common programming languages include Java, Python, C, C++, Ruby, and JavaScript. As a computer programmer, there are always new languages to learn and existing ones to refresh skills in due to constantly evolving technologies.

computerscienceis
Learning to code in 2020
Learning to code in 2020Learning to code in 2020
Learning to code in 2020

This document provides guidance for high school and college students on learning to code. It discusses the benefits of coding skills, different types of coding careers, and what coding and software development entail. It then covers considerations for choosing a first programming language, including options for learning functional programming first or starting with Python. The document predicts that Rust will be in high demand in the coming years for developing embedded systems and web applications due to its safety and growing adoption. It recommends students learn foundational concepts in a beginner-friendly language before potentially specializing in Rust.

functional programmingrusteducation
More Community Support ANT– cross-platform build scripts Java Coding Conventions The massive, and growing, open source projects out there http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html http://ant.apache.org/ http://jakarta.apache.org http://www.jboss.org etcetera
Conclusions Core technical features of a language are important Programmer productivity is important Lisp, Java, Python, C# are all excellent so far Libraries are important Java and (less so) C# standout here Community support is the next level Java is unique here

More Related Content

What's hot

Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)
Ivo Jansch
 
Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"
GoIT
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair Programming
Steven Smith
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed
Elizabeth Quinn-Woods
 
Pair Programming
Pair ProgrammingPair Programming
Pair Programming
Siriwat Jithunsa
 
Basics of Computer Coding: Understanding Coding Languages
Basics of Computer Coding: Understanding Coding LanguagesBasics of Computer Coding: Understanding Coding Languages
Basics of Computer Coding: Understanding Coding Languages
Brian Pichman
 
Developers survival-guide
Developers survival-guideDevelopers survival-guide
Developers survival-guide
Dinesh Vasudevan
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Andy Maleh
 
Why Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For AllWhy Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For All
Katy Slemon
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?
MobiDev
 
Gsm library for proteus the engineering projects
Gsm library for proteus   the engineering projectsGsm library for proteus   the engineering projects
Gsm library for proteus the engineering projects
ZerihunDemere
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
Ahmet Bulut
 
Importance of the quality of code
Importance of the quality of codeImportance of the quality of code
Importance of the quality of code
Shwe Yee
 
PhoneGap: a brief history and apologia
PhoneGap: a brief history and apologiaPhoneGap: a brief history and apologia
PhoneGap: a brief history and apologia
lorinbeer
 
Computer programming
Computer programmingComputer programming
Computer programming
Sujay Raj
 
Professional Software Development, Practices and Ethics
Professional Software Development, Practices and EthicsProfessional Software Development, Practices and Ethics
Professional Software Development, Practices and Ethics
Lemi Orhan Ergin
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
Christian Heilmann
 
The Ring programming language version 1.3 book - Part 81 of 88
The Ring programming language version 1.3 book - Part 81 of 88The Ring programming language version 1.3 book - Part 81 of 88
The Ring programming language version 1.3 book - Part 81 of 88
Mahmoud Samir Fayed
 

What's hot (18)

Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)
 
Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair Programming
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed
 
Pair Programming
Pair ProgrammingPair Programming
Pair Programming
 
Basics of Computer Coding: Understanding Coding Languages
Basics of Computer Coding: Understanding Coding LanguagesBasics of Computer Coding: Understanding Coding Languages
Basics of Computer Coding: Understanding Coding Languages
 
Developers survival-guide
Developers survival-guideDevelopers survival-guide
Developers survival-guide
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
 
Why Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For AllWhy Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For All
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?
 
Gsm library for proteus the engineering projects
Gsm library for proteus   the engineering projectsGsm library for proteus   the engineering projects
Gsm library for proteus the engineering projects
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Importance of the quality of code
Importance of the quality of codeImportance of the quality of code
Importance of the quality of code
 
PhoneGap: a brief history and apologia
PhoneGap: a brief history and apologiaPhoneGap: a brief history and apologia
PhoneGap: a brief history and apologia
 
Computer programming
Computer programmingComputer programming
Computer programming
 
Professional Software Development, Practices and Ethics
Professional Software Development, Practices and EthicsProfessional Software Development, Practices and Ethics
Professional Software Development, Practices and Ethics
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
 
The Ring programming language version 1.3 book - Part 81 of 88
The Ring programming language version 1.3 book - Part 81 of 88The Ring programming language version 1.3 book - Part 81 of 88
The Ring programming language version 1.3 book - Part 81 of 88
 

Similar to Java And Community Support

Specification Of The Programming Language Of Java
Specification Of The Programming Language Of JavaSpecification Of The Programming Language Of Java
Specification Of The Programming Language Of Java
Kim Moore
 
The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 of 210The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 of 210
Mahmoud Samir Fayed
 
web development ppt by prakash bedage
web development ppt by prakash bedageweb development ppt by prakash bedage
web development ppt by prakash bedage
PrakashBedage
 
web development project prakash.pptx
web development project prakash.pptxweb development project prakash.pptx
web development project prakash.pptx
PrakashBedage
 
Java
JavaJava
The Ring programming language version 1.5.1 book - Part 173 of 180
The Ring programming language version 1.5.1 book - Part 173 of 180 The Ring programming language version 1.5.1 book - Part 173 of 180
The Ring programming language version 1.5.1 book - Part 173 of 180
Mahmoud Samir Fayed
 
Top Programming Languages of 2020
Top Programming Languages of 2020Top Programming Languages of 2020
Top Programming Languages of 2020
Ikbal Ahmed
 
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...
Laura Martin
 
Learning to code in 2020
Learning to code in 2020Learning to code in 2020
Learning to code in 2020
Nicholas Sterling
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer
Sean Coates
 
Top Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdfTop Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdf
JamesEddie2
 
Top 30 Scalability Mistakes
Top 30 Scalability MistakesTop 30 Scalability Mistakes
Top 30 Scalability Mistakes
John Coggeshall
 
How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer
Ramy Hakam
 
Dion computerprogramming
Dion computerprogrammingDion computerprogramming
Dion computerprogramming
caseydion22
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
Michael Choi
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
streambase
 
12 best programming languages for web & app development
12 best programming languages for web & app development12 best programming languages for web & app development
12 best programming languages for web & app development
Biztech Consulting & Solutions
 
Unit 1
Unit 1Unit 1
Unit 1
ankita1317
 
JAVA
JAVAJAVA
Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023
SofiaCarter4
 

Similar to Java And Community Support (20)

Specification Of The Programming Language Of Java
Specification Of The Programming Language Of JavaSpecification Of The Programming Language Of Java
Specification Of The Programming Language Of Java
 
The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 of 210The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 of 210
 
web development ppt by prakash bedage
web development ppt by prakash bedageweb development ppt by prakash bedage
web development ppt by prakash bedage
 
web development project prakash.pptx
web development project prakash.pptxweb development project prakash.pptx
web development project prakash.pptx
 
Java
JavaJava
Java
 
The Ring programming language version 1.5.1 book - Part 173 of 180
The Ring programming language version 1.5.1 book - Part 173 of 180 The Ring programming language version 1.5.1 book - Part 173 of 180
The Ring programming language version 1.5.1 book - Part 173 of 180
 
Top Programming Languages of 2020
Top Programming Languages of 2020Top Programming Languages of 2020
Top Programming Languages of 2020
 
Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...Computer Science Is The Study Of Principals And How The...
Computer Science Is The Study Of Principals And How The...
 
Learning to code in 2020
Learning to code in 2020Learning to code in 2020
Learning to code in 2020
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer
 
Top Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdfTop Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdf
 
Top 30 Scalability Mistakes
Top 30 Scalability MistakesTop 30 Scalability Mistakes
Top 30 Scalability Mistakes
 
How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer
 
Dion computerprogramming
Dion computerprogrammingDion computerprogramming
Dion computerprogramming
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
 
12 best programming languages for web & app development
12 best programming languages for web & app development12 best programming languages for web & app development
12 best programming languages for web & app development
 
Unit 1
Unit 1Unit 1
Unit 1
 
JAVA
JAVAJAVA
JAVA
 
Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023
 

More from William Grosso

Slot Widgets
Slot WidgetsSlot Widgets
Slot Widgets
William Grosso
 
Formal Aspects of Protege
Formal Aspects of ProtegeFormal Aspects of Protege
Formal Aspects of Protege
William Grosso
 
Knowing How People Are Playing Your Game Gives You the Winning Hand
Knowing How People Are Playing Your Game Gives You the Winning HandKnowing How People Are Playing Your Game Gives You the Winning Hand
Knowing How People Are Playing Your Game Gives You the Winning Hand
William Grosso
 
Tales from the Platform Trade
Tales from the Platform TradeTales from the Platform Trade
Tales from the Platform Trade
William Grosso
 
Maxims for Multiplayer Games
Maxims for Multiplayer GamesMaxims for Multiplayer Games
Maxims for Multiplayer Games
William Grosso
 
Crafting an Analytics Strategy
Crafting an Analytics StrategyCrafting an Analytics Strategy
Crafting an Analytics Strategy
William Grosso
 
UCSC Talk on Building Startups
UCSC Talk on Building StartupsUCSC Talk on Building Startups
UCSC Talk on Building Startups
William Grosso
 
On the Startup Team
On the Startup TeamOn the Startup Team
On the Startup Team
William Grosso
 
Scientific revenue unreasonable effectiveness of data
Scientific revenue unreasonable effectiveness of dataScientific revenue unreasonable effectiveness of data
Scientific revenue unreasonable effectiveness of data
William Grosso
 
Taking Virtual Economies to the Next Level
Taking Virtual Economies to the Next LevelTaking Virtual Economies to the Next Level
Taking Virtual Economies to the Next Level
William Grosso
 
Managing a Virtual Economy
Managing a Virtual EconomyManaging a Virtual Economy
Managing a Virtual Economy
William Grosso
 
Applying Retail Strategies to Item Merchandising
Applying Retail Strategies to Item MerchandisingApplying Retail Strategies to Item Merchandising
Applying Retail Strategies to Item Merchandising
William Grosso
 
Managing a Virtual Economy
Managing a Virtual EconomyManaging a Virtual Economy
Managing a Virtual Economy
William Grosso
 
Virtual Worlds and Real Metrics:
Virtual Worlds and Real Metrics:Virtual Worlds and Real Metrics:
Virtual Worlds and Real Metrics:
William Grosso
 
Groovy And Grails
Groovy And GrailsGroovy And Grails
Groovy And Grails
William Grosso
 
The Evolving Architecture
The Evolving ArchitectureThe Evolving Architecture
The Evolving Architecture
William Grosso
 

More from William Grosso (16)

Slot Widgets
Slot WidgetsSlot Widgets
Slot Widgets
 
Formal Aspects of Protege
Formal Aspects of ProtegeFormal Aspects of Protege
Formal Aspects of Protege
 
Knowing How People Are Playing Your Game Gives You the Winning Hand
Knowing How People Are Playing Your Game Gives You the Winning HandKnowing How People Are Playing Your Game Gives You the Winning Hand
Knowing How People Are Playing Your Game Gives You the Winning Hand
 
Tales from the Platform Trade
Tales from the Platform TradeTales from the Platform Trade
Tales from the Platform Trade
 
Maxims for Multiplayer Games
Maxims for Multiplayer GamesMaxims for Multiplayer Games
Maxims for Multiplayer Games
 
Crafting an Analytics Strategy
Crafting an Analytics StrategyCrafting an Analytics Strategy
Crafting an Analytics Strategy
 
UCSC Talk on Building Startups
UCSC Talk on Building StartupsUCSC Talk on Building Startups
UCSC Talk on Building Startups
 
On the Startup Team
On the Startup TeamOn the Startup Team
On the Startup Team
 
Scientific revenue unreasonable effectiveness of data
Scientific revenue unreasonable effectiveness of dataScientific revenue unreasonable effectiveness of data
Scientific revenue unreasonable effectiveness of data
 
Taking Virtual Economies to the Next Level
Taking Virtual Economies to the Next LevelTaking Virtual Economies to the Next Level
Taking Virtual Economies to the Next Level
 
Managing a Virtual Economy
Managing a Virtual EconomyManaging a Virtual Economy
Managing a Virtual Economy
 
Applying Retail Strategies to Item Merchandising
Applying Retail Strategies to Item MerchandisingApplying Retail Strategies to Item Merchandising
Applying Retail Strategies to Item Merchandising
 
Managing a Virtual Economy
Managing a Virtual EconomyManaging a Virtual Economy
Managing a Virtual Economy
 
Virtual Worlds and Real Metrics:
Virtual Worlds and Real Metrics:Virtual Worlds and Real Metrics:
Virtual Worlds and Real Metrics:
 
Groovy And Grails
Groovy And GrailsGroovy And Grails
Groovy And Grails
 
The Evolving Architecture
The Evolving ArchitectureThe Evolving Architecture
The Evolving Architecture
 

Recently uploaded

Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
KAMAL CHOUDHARY
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
ScyllaDB
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
SynapseIndia
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
Bert Blevins
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 

Recently uploaded (20)

Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 

Java And Community Support

  • 1. Java: It's better than you think, for reasons you haven't realized you already know. William Grosso Chair, Emerging Technology SIG SDForum
  • 2. In this talk, the speaker will draw upon his past experience as chair of SDForum's Java SIG ( www.sdforum.org/sigs/java ) and his current role as the chair of SDForum's Emerging Technology SIG ( www.sdforum.org/sigs/emerging ) to explain why beginning and intermediate programmers should learn Java, why most (practical) software innovations over the next few years will involve programs written in Java, and why programmers using Java-based systems are going to reinvent the internet over the next 5 years.
  • 3. About the Speaker Masters in Mathematics, U.C. Berkeley Currently: Vice President of Technical Services, Hipbone Incorporated Author Java RMI (O’Reilly and Associates) Java Enterprise Best Practices (O’Reilly and Associates) Working on a book about the Globus Project
  • 4. More Importantly Chaired SDForum’s Java SIG for 3 years Current chair of SDForum’s Emerging Technology SIG http://www.sdforum.org/sigs/java http://www.sdforum.org/sigs/emerging
  • 5. The Point of this Talk I want to convince you of two things That Java, or some language like it, is inevitable from a technological point of view That Java itself is inevitable from a social point of view. I want to avoid using the traditional technology or “computer science” based arguments
  • 6. DISCLAIMER : Most of this is not Mine Shamelessly stealing from Marc Fleury, Dick Gabriel, Paul Graham, Bill Joy, Peter Norvig, Todd Proebsting, Joel Spolsky, and others. Follow the URLs and do google searches.
  • 8. Typical Arguments Lisp is better than Java because Java doesn’t support tail recursion very well (or Lisp has better macros or …) C++ is better than Java because it compiles to native code and will always be faster C++ is better than Java because you can allocate memory using the stack– it’s way more efficient My language has a preprocessor and yours doesn’t.
  • 9. Typical Arguments are Boring There are lots of “language arguments” that are based on some artifact of the implementation or algorithms Usually these boil down to “X is better than Y because I’m used to X” Often these reflect a lack of understanding of the programming process Everyone’s engaged in them, of course
  • 10. Arguments Based on Program Speed are Particularly Silly Intel has solved this problem already My home machine has a gig of RAM and a 2GHZ processor So does yours (or it will soon) What’s the difference between 2 milliseconds and 4 milliseconds? This generalizes to resource consumption
  • 11. Paul Graham 2. Speed Comes from Profilers. Language designers, or at least language implementers, like to write compilers that generate fast code. But I don't think this is what makes languages fast for users. Knuth pointed out long ago that speed only matters in a few critical bottlenecks. And anyone who's tried it knows that you can't guess where these bottlenecks are. Profilers are the answer. Language designers are solving the wrong problem. Users don't need benchmarks to run fast. What they need is a language that can show them what parts of their own programs need to be rewritten. That's where speed comes from in practice. So maybe it would be a net win if language implementers took half the time they would have spent doing compiler optimizations and spent it writing a good profiler instead. http://www.paulgraham.com/langdes.html
  • 12. Counterargument (Norvig) “Mainframe Economics” Google has 15,000 Linux boxes A factor of two matters here. In fact, Google uses: A custom build of Linux A carefully defined hardware platform C++ and “inner loops written in assembly”
  • 13. CounterCounterArgument (Graham) Back in 1995, we knew something that I don't think our competitors understood, and few understand even now: when you're writing software that only has to run our your own servers, you can use any language you want. When you're writing desktop software, there's a strong bias toward writing applications in the same language as the operating system. Ten years ago, writing applications meant writing applications in C. But with Web-based software, especially when you have the source code of both the language and the operating system, you can use whatever language you want. If you can use any language, which do you use? We chose Lisp. For one thing, it was obvious that rapid development would be important in this market. We were all starting from scratch, so a company that could get new features done before its competitors would have a big advantage. We knew Lisp was a really good language for writing software quickly, and server-based applications magnify the effect of rapid development, because you can release software the minute it's done. http://lib1.store.vip.sc5.yahoo.com/lib/paulgraham/sec.txt
  • 14. Acceptable Technical Arguments Memory management (“managed code”) Scriptability / The existence of a well-defined interpreted environment Changeability– the ability to change program behavior in radical ways without restarting the program or otherwise disrupting existing users.
  • 15. Memory Management I'll go out on a limb here. In my years of experience, I have seen many language and programming fads come and go. But there's only ONE, that's right, ONE language feature I've ever seen that actually improves your productivity significantly. No, it's not object oriented programming; no, it's not intentional programming or assertions or programming by example or CASE or UML or XML or Java. The only thing that improves your programming productivity is using managed code - that is, using a language in which memory management is automatic. Java and .NET languages do this with garbage collection; VB does this with reference counting; I don't care how you do it, just let me concatenate strings without thinking about where the new bigger string will go and I'll be happy. http://www.joelonsoftware.com/printerFriendly/articles/fog0000000006.html
  • 16. Scriptability Ability to quickly test pieces of code in an interpreted environment Perl, Python, and Lisp have this. Almost all startups use at least one of these for “quick and dirty” code I prefer Python; your mileage may vary
  • 17. Changeability Ability to change software on the fly, in a controlled fashion Not so important on desktops Very important in web applications
  • 18. Graham on Changeability 3. What Do You Need for Server-Based Software? I think a lot of the most exciting new applications that get written in the next twenty years will be Web-based applications, meaning programs that sit on the server and talk to you through a Web browser. And to write these kinds of programs we may need some new things. One thing we'll need is support for the new way that server-based apps get released. Instead of having one or two big releases a year, like desktop software, server-based apps get released as a series of small changes. You may have as many as five or ten releases a day. And as a rule everyone will always use the latest version. You know how you can design programs to be debuggable? Well, server-based software likewise has to be designed to be changeable. You have to be able to change it easily, or at least to know what is a small change and what is a momentous one.
  • 20. The Biggest Open Problem In Programming Languages Increasing Programmer Productivity Write programs correctly Write programs quickly Write programs easily Why? Decreases support cost Decreases development cost Decreases time to market Increases satisfaction http://research.microsoft.com/~toddpro/papers/disruptive.ppt
  • 21. What Proebsting Missed Individual Programmer Productivity is important If individual programmers aren’t productive, then the game is over Community Productivity is More Important Bill Joy– “No matter how big and smart your company is, there are more smart guys working outside your company.”
  • 22. The Big Bold Claim In the world of the future, programs will be increasingly be written by communities The single best measure of whether a programming language is worth using is: how well does it support communities. The social aspects of the language dominate the technological aspects of the language
  • 23. Supporting Communities New programmers must be able to get up to speed in the language Platforms to learn the language on must be cheap and plentiful Programmers must be able to use the language on whatever machine they’re using Programmers must be able to understand and reuse each other’s code Old code must survive in a useful form And evolve and improve
  • 24. Revisiting Language Design Paul Graham’s 5 Principles of Language Design http://www.paulgraham.com/langdes.html 1. Programming Languages Are for People. Programming languages are how people talk to computers. The computer would be just as happy speaking any language that was unambiguous. The reason we have high level languages is because people can't deal with machine language. The point of programming languages is to prevent our poor frail human brains from being overwhelmed by a mass of detail.
  • 25. Write Once, Run Anywhere (WORA) One of the original claims behind Java “Write in Java, and it’ll run on any machine that has a JVM” Employee: Hey! Microsoft just changed the Windows API again. Damn that Evil Monopoly (tm). Our app is crashing !!!!!! Boss: Hey. Chill out. No problem. Netscape and SUN are porting the app, even as we speak.
  • 26. Original WORA Claim is False “write once, debug anywhere” Problems with “native look and feel applications” Java apps don’t quite look like Windows apps Subtle differences in things like threading implementations often mean you have to performance tune on platforms In general, abstractions leak http://www.joelonsoftware.com/articles/LeakyAbstractions.html
  • 27. WORA Almost Succeeded You can read anyone's code You can figure out what makes sense You can take and adapt whatever works for you A whole new style of programming Write Half, Steal the Rest
  • 28. WORA Promoted Readability Promoted an active culture of borrowing I’m not claiming I can immediately understand any piece of Java code on the net But I can understand the good ones (and easily) Regardless of the platform the code started out on Interesting test: Go to jakarta.apache.org, look at a checkin, and try to figure out what platform the author was working on You can’t do it
  • 29. WORA Promotes Software Survival Java code will survive. Write today, use next year. Easy to maintain at a fixed level of functionality C++ code, on the other hand, needs new ifdefs for every platform that comes along.
  • 30. Java Enables Evolution Bad Code Dies Good Code Lives On And is modified And evolves And becomes better
  • 31. // Boost compiler configuration selection header file // (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and // distribute this software is granted provided this copyright notice appears // in all copies. This software is provided "as is" without express or implied // warranty, and with no claim as to its suitability for any purpose. // See http://www.boost.org for most recent version. // locate which compiler we are using and define // BOOST_COMPILER_CONFIG as needed: #if defined __GNUC__ // GNU C++: # define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp" # elif defined __COMO__ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" #elif defined __KCC // Kai C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/kai.hpp" #elif defined __sgi // SGI MIPSpro C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/sgi_mipspro.hpp" #elif defined __DECCXX // Compaq Tru64 Unix cxx # define BOOST_COMPILER_CONFIG "boost/config/compiler/compaq_cxx.hpp" #elif defined __ghs // Greenhills C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp" #elif defined __BORLANDC__ // Borland # define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp" #elif defined(__ICL) || defined(__ICC) // Intel # define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp" #elif defined __MWERKS__ // Metrowerks CodeWarrior # define BOOST_COMPILER_CONFIG "boost/config/compiler/metrowerks.hpp" #elif defined __SUNPRO_CC // Sun Workshop Compiler C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/sunpro_cc.hpp" #elif defined __HP_aCC // HP aCC # define BOOST_COMPILER_CONFIG "boost/config/compiler/hp_acc.hpp" #elif defined(__MRC__) || defined(__SC__) // MPW MrCpp or SCpp # define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp" #elif defined(__IBMCPP__) // IBM Visual Age # define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp" #elif defined _MSC_VER // Microsoft Visual C++ // // Must remain the last #elif since some other vendors (Metrowerks, for // example) also #define _MSC_VER # define BOOST_COMPILER_CONFIG "boost/config/compiler/visualc.hpp" #elif defined (BOOST_ASSERT_CONFIG) // this must come last - generate an error if we don't // recognise the compiler: # error "Unknown compiler - please configure and report the results to boost.org" #endif www.boost.org This is what highly portable C++ looks like.
  • 32. WORA == Community Reuse lots of code from different places Very little need to worry about platform dependencies Widespread adoption of coding conventions And large-scale libraries Java programming articles are useful to anyone. I program on Windows, using an IDE. I get feedback from people using Emacs on Linux. There is no such thing as a C++ programmer.
  • 33. More Community Support ANT– cross-platform build scripts Java Coding Conventions The massive, and growing, open source projects out there http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html http://ant.apache.org/ http://jakarta.apache.org http://www.jboss.org etcetera
  • 34. Conclusions Core technical features of a language are important Programmer productivity is important Lisp, Java, Python, C# are all excellent so far Libraries are important Java and (less so) C# standout here Community support is the next level Java is unique here