Institutionen För Datavetenskap Department of Computer and Information Science

Total Page:16

File Type:pdf, Size:1020Kb

Institutionen För Datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis Performance Analysis of JavaScript by Fredrik Smedberg LIU-IDA/ LITH-EX-A--10/020-SE 2010-05-17 Linköpings universitet Linköpings universitet SE-581 83 Linköping, Sweden 581 83 Linköping Linköping University Department of Computer and Information Science Final Thesis Performance Analysis of JavaScript by Fredrik Smedberg LIU-IDA/LITH-EX-A--10/020-SE 2010-05-17 Supervisor: David Byers Examiner: Nahid Shahmehri Summary Figure 1: Development of JavaScript Performance over Time In the last decade, web browsers have seen a remarkable increase of performance, especially in the JavaScript engines. JavaScript has over the years gone from being a slow and rather limited language, to today have become feature-rich and fast. It’s speed can be around the same or half of comparable code written in C++, but this speed is directly dependent on the choice of the web browser, and the best performance is seen in browsers using JIT compilation techniques. Even though the language has seen a dramatic increase in performance, there’s still major problems regarding memory usage. JavaScript applica- tions typically consume 3-4 times more memory than similar applications written in C++. Many browser vendors, like Opera Software, acknowledge this and are currently trying to optimize their memory usage. This issue is hopefully non-existent within a near future. Because the majority of scientific papers written about JavaScript only compare performance using the industry benchmarks SunSpider and V8, this thesis have chosen to widen the scope. The benchmarks really give no information about how JavaScript stands in comparison to C#, C++ and other popular languages. To be able to compare that, I’ve implemented a GIF decoder, an XML parser and various elementary tests in both JavaScript and C++ to compare how far apart the languages are in terms of speed, memory usage and responsiveness. 1 Thanks to Thanks to Opera Software and Link¨oping University that made this the- sis possible. Special thanks to Nicklas Larsson (my supervisor at Opera), Geoffrey Sneddon, James Graham, Daniel Sp˚ang, Jens Lindstr¨omand the other people at the Core division of Opera Software for answering all my silly questions. I also want to thank Professor Nahid Shahmehri and David Byers at the ADIT division of the Department of Computer and Information Science at Link¨oping University for their guidance while writing this thesis. 2 Contents 1 Introduction 12 1.1 A Short History of the Web . 12 1.2 The Need for Increased Speed . 13 1.3 Purpose and Problem Formulation . 14 1.3.1 Questions . 16 1.3.2 The Chosen Languages . 16 1.4 OutlineofthisThesis ...................... 17 2 A Short Introduction to JavaScript 18 2.1 TheBirth............................. 18 2.2 Language Design . 18 2.3 The Virtual Machine . 19 2.4 Strategies Towards Speed . 20 3 Areas of Interest 21 3.1 How Performance gets Affected . 21 3.2 The Amount of Code and its Influence on Understandability . 22 3.3 Memory Leaks . 22 3.4 Portability and Reusability . 22 3.5 Development Tools . 23 3.6 When,WhereandhowOften . 23 3.7 Software Language . 23 4 Related Work 24 4.1 Comments on Sun Microsystems Research . 24 4.1.1 Extremely Tolerant . 24 4.1.2 Lack of Modularity and Functionality . 25 4.1.3 Memory Management . 25 4.2 Comments on two Research Papers from Microsoft . 25 4.3 Comments on Research made by the University of Michigan . 27 4.3.1 Memory consumption comparison . 28 4.3.2 CPU Usage . 29 4.3.3 Responsiveness . 29 3 4.3.4 Start-up time . 30 4.3.5 JavaScript Benchmark . 30 4.4 Comments on a Paper from the University of Calgary . 31 4.4.1 Start-up time . 31 4.4.2 SunSpider Benchmarks . 32 5 Methodology 33 5.1 Method .............................. 33 5.1.1 The GIF Image Decoder . 34 5.1.2 The XML Parser . 34 5.1.3 Individual Tasks . 34 5.1.4 JPEG Encoder . 35 5.1.5 Industry Benchmarks . 35 5.1.6 Implementation Method-flow . 35 6 Implementation 37 6.1 Implementing an Image Decoder . 37 6.1.1 Purpose . 37 6.1.2 Choosing a Suitable Format . 38 6.1.3 Architecture and Design . 38 6.1.4 Implementation . 39 6.1.5 How Often is the GIF Decoder Used? . 40 6.1.6 Development Utilities . 40 6.1.7 Discovered Problems Along the Way . 41 6.1.8 Profiling and Optimization . 42 6.2 Parsing XML . 48 6.2.1 Purpose . 48 6.2.2 Choosing a Suitable Format . 48 6.2.3 Architecture and Design . 48 6.2.4 Implementation . 48 6.2.5 How Often is the XML Parser Used? . 48 6.2.6 Development Utilities . 49 6.2.7 Profiling and Optimization . 49 6.3 Low-level Tasks . 49 6.3.1 Purpose . 49 6.3.2 Architecture and Design . 49 6.3.3 Implementation . 49 6.3.4 Profiling and Optimization . 49 7 Results 50 7.1 Motivation . 50 7.2 OutlineoftheResults ...................... 51 7.3 InterestingPerformanceResults. 52 7.3.1 Historic Development . 52 4 7.3.2 JPEGencoding...................... 52 7.3.3 GIFdecoding....................... 53 7.3.4 Working with Strings and Running Regular Expressions 55 7.4 Time................................ 56 7.4.1 Time Spent on Rewriting the C++ Code to JavaScript 56 7.4.2 Time Spent on Writing a XML Parser . 56 7.4.3 Time Spent on Modifying the Shootout Source Code . 56 7.5 Multitasking and Responsiveness . 57 7.5.1 Parse ’n Load . 57 7.5.2 Cooperative multitasking . 57 7.6 ElementaryTests......................... 59 7.7 TestSuites ............................ 65 7.7.1 V8 Test Suite . 65 7.7.2 SunSpider Benchmark . 66 8 Discussion 70 8.1 Historic Development . 70 8.2 Performance of the GIF Decoder and JPEG Encoder . 71 8.3 XML Parsing . 73 8.4 Parse ’n Load . 74 8.5 OtherResults........................... 74 8.6 Development Tools . 74 8.7 Some Last Thoughts . 75 9 Conclusion 78 9.1 Is the Performance of the Software Affected? . 78 9.2 Has the Code Become Easier to Comprehend? . 78 9.3 What Development Utilities Exist and What’s Their Impact ontheDevelopment?....................... 78 9.4 When and Where is it Motivated to use JavaScript? . 79 9.5 How Often is the Code Used, Every Millisecond, Minute, Hour or Day? . 79 9.6 Conclusion . 79 10 Future Work 80 11 Appendix A 82 11.1 LZW decompressor written in Python . 82 12 Appendix B 83 12.1 GIF Files Used During Implementation . 83 12.1.1 GifSample . 83 12.1.2 OpenDNS Logo . 84 12.1.3 Colored Small Test Image . 84 5 12.1.4 i-Bench Transparent GIF . 84 12.1.5 Large Colored Sinus Curve . 85 12.2 Strange Results when Decoding GIF . 85 12.2.1 Missing Color Channels . 85 12.3 PNG File Used with the JPEG Encoder . 86 12.3.1 Pool table . 86 13 Appendix C GIF Format Explanation 87 13.1 Defining the Grammar . 87 13.1.1 Grammar . 87 13.1.2 Example . 88 13.2 GIF Data Format . 88 13.2.1 Header . 88 13.2.2 Logical Screen Descriptor . 88 13.2.3 Global Color Table . 90 13.2.4 Image Descriptor . 90 13.2.5 Local Color Table . 91 13.2.6 Table Based Image Data . 92 13.2.7 Graphic Control Extension . 92 13.2.8 Comment Extension . 94 13.2.9 Plain Text Extension . 94 13.2.10 Application Extension . 95 13.2.11 Trailer . 95 14 Appendix D AGIFDecoderwritteninC++ 96 14.1 main.c . 96 14.2 gifdecoder.c . 100 14.3 gifdecoder.h . 111 15 Appendix E Web Browser Image Decoding Performance Test 115 15.1 C++ Image Decoding Speed Test using JavaScript . 115 16 Appendix F Patterns 117 16.1 General . 117 16.1.1 NULL assignment . 117 16.1.2 Boolean values . 117 16.1.3 Changing one character . 118 16.1.4 For-loop . 118 16.1.5 Assertion . 119 16.1.6 RETURN IF ERROR . 120 6 16.1.7 OP NEWA . 120 16.1.8 op memcpy (copying of memory) . 120 16.1.9 Opera Status Code . 122 16.2 Classes . 123 16.2.1 Interfaces . 123 16.2.2 Inheritance . 123 16.2.3 Constructor . 126 16.2.4 Create (definition) . 126 16.2.5 Create (usage) . 127 16.2.6 Public variable . 127 16.2.7 Public function . 127 16.2.8 Public struct . 128 16.2.9 Private variable . ..
Recommended publications
  • Marcelo Camargo (Haskell Camargo) – Résumé Projects
    Marcelo Camargo (Haskell Camargo) – Résumé https://github.com/haskellcamargo [email protected] http://coderbits.com/haskellcamargo Based in Joinville / SC – Brazil Knowledge • Programming languages domain: ◦ Ada, AdvPL, BASIC, C, C++, C#, Clipper, Clojure, CoffeeScript, Common LISP, Elixir, Erlang, F#, FORTRAN, Go, Harbour, Haskell, Haxe, Hy, Java, JavaScript, Ink, LiveScript, Lua, MATLAB, Nimrod, OCaml, Pascal, PHP, PogoScript, Processing, PureScript, Python, Ruby, Rust, Self, Shell, Swift, TypeScript, VisualBasic [.NET], Whip, ZPL. • Markup, style and serialization languages: ◦ Markdown, reStructuredText, [X] HTML, XML, CSS, LESS, SASS, Stylus, Yaml, JSON, DSON. • Database management systems: ◦ Oracle, MySQL, SQL Server, IBM DB2, PostgreSQL. • Development for operating systems: ◦ Unix based, Windows (CE mobile included), Android, Firefox OS. • Parsers and compilers: ◦ Macros: ▪ Sweet.js, preprocessor directives. ◦ Parser and scanner generators: ▪ ANTLR, PEG.js, Jison, Flex, re2c, Lime. • Languages: ◦ Portuguese (native) ◦ English (native) ◦ Spanish (fluent) ◦ French (fluent) ◦ Turkish (intermediate) ◦ Chinese (mandarin) (intermediate) ◦ Esperanto (intermediate) Projects • Prelude AdvPL – a library that implements functional programming in AdvPL and extends its syntax to a more expressive one; it's a port of Haskell's Prelude; • Frida – a LISP dialect that runs on top of Node.js; • PHPP – A complete PHP preprocessor with a grammar able to identify and replace tokens and extend/modify the language syntax, meant to be implemented
    [Show full text]
  • THE FUTURE of SCREENS from James Stanton a Little Bit About Me
    THE FUTURE OF SCREENS From james stanton A little bit about me. Hi I am James (Mckenzie) Stanton Thinker / Designer / Engineer / Director / Executive / Artist / Human / Practitioner / Gardner / Builder / and much more... Born in Essex, United Kingdom and survived a few hair raising moments and learnt digital from the ground up. Ok enough of the pleasantries I have been working in the design field since 1999 from the Falmouth School of Art and onwards to the RCA, and many companies. Ok. less about me and more about what I have seen… Today we are going to cover - SCREENS CONCEPTS - DIGITAL TRANSFORMATION - WHY ASSETS LIBRARIES - CODE LIBRARIES - COST EFFECTIVE SOLUTION FOR IMPLEMENTATION I know, I know, I know. That's all good and well, but what does this all mean to a company like mine? We are about to see a massive change in consumer behavior so let's get ready. DIGITAL TRANSFORMATION AS A USP Getting this correct will change your company forever. DIGITAL TRANSFORMATION USP-01 Digital transformation (DT) – the use of technology to radically improve performance or reach of enterprises – is becoming a hot topic for companies across the globe. VERY DIGITAL CHANGING NOT VERY DIGITAL DIGITAL TRANSFORMATION USP-02 Companies face common pressures from customers, employees and competitors to begin or speed up their digital transformation. However they are transforming at different paces with different results. VERY DIGITAL CHANGING NOT VERY DIGITAL DIGITAL TRANSFORMATION USP-03 Successful digital transformation comes not from implementing new technologies but from transforming your organisation to take advantage of the possibilities that new technologies provide.
    [Show full text]
  • A World of Active Objects for Work and Play: the First Ten Years of Lively
    A World of Active Objects for Work and Play The First Ten Years of Lively Daniel Ingalls Tim Felgentreff Robert Hirschfeld Y Combinator Research Hasso Plattner Institute Hasso Plattner Institute, Potsdam, San Francisco, CA, USA Potsdam, Germany Germany [email protected] [email protected] [email protected] Robert Krahn Jens Lincke Marko Roder¨ Y Combinator Research Hasso Plattner Institute Y Combinator Research San Francisco, CA, USA Potsdam, Germany San Francisco, CA, USA [email protected] [email protected] [email protected] Antero Taivalsaari Tommi Mikkonen Nokia Technologies Tampere University of Technology Tampere, Finland Tampere, Finland [email protected] tommi.mikkonen@tut.fi Abstract Keywords Web programming, Software as a Service, Live The Lively Kernel and the Lively Web represent a continu- Object System, Lively Kernel, Lively Web, Lively, JavaScript, ing effort to realize a creative computing environment in the Morphic context of the World Wide Web. We refer to that evolving system simply as Lively. Lively is a live object computing 1. Live Object Systems environment implemented using JavaScript and other tech- Lively [12] is a live object system which provides a web niques available inside the browser. When first built in 2006, programming and authoring system to its users. By live ob- it was a grand accomplishment to have created such a sys- jects we mean entities that can usually be seen, touched, and tem that would run in any web browser and that could be moved and that will react in a manner prescribed by some set saved and loaded simply as a web page.
    [Show full text]
  • IADIS Conference Template
    www.seipub.org/ie Information Engineering (IE) Volume 3, 2014 Performance and Quality Evaluation of jQuery Javascript Framework Andreas Gizas, Sotiris P. Christodoulou, Tzanetos Pomonis HPCLab, Computer Engineering & Informatics Dept., University of Patras Rion, Patras Received Jun 10, 2013; Revised Jun 21, 2013; Accepted Mar 12, 2014; Published Jun 12, 2014 © 2014 Science and Engineering Publishing Company Abstract devices. Mobile web is the name of this new field of The scope of this work is to provide a thorough web applications and JavaScript is expected to play a methodology for quality and performance evaluation of the major role in its development with the evolution of most popular JavaScript framework, the jQuery Framework, new devices and standards (ex. iPhone, Android) or as by taking into account well established software quality the heart of cross platform applications (like factors and performance tests. The JavaScript programming phonegap.com). There are also proposals for language is widely used for web programming and employing JavaScript in server-side applications increasingly, for general purpose of computing. Since the (Server-Side JavaScript Reference v1.2). growth of its popularity and the beginning of web 2.0 era, many JavaScript frameworks have become available for Due to the plethora of applications that JavaScript programming rich client-side interactions in web serves and the variety of programming needs, applications. The jQuery project and its community serve frameworks have been created in order to help both today as a major part of web programmers. The main programmers and end-users. These frameworks aim to outcome of this work is to highlight the pros and cons of be a useful tool for simplifying JavaScript code jQuery in various areas of interest and signify which and development and repeat blocks of code by using just a where the weak points of its code are.
    [Show full text]
  • Javascript Tomasz Pawlak, Phd Marcin Szubert, Phd Institute of Computing Science, Poznan University of Technology Presentation Outline
    INTERNET SYSTEMS JAVASCRIPT TOMASZ PAWLAK, PHD MARCIN SZUBERT, PHD INSTITUTE OF COMPUTING SCIENCE, POZNAN UNIVERSITY OF TECHNOLOGY PRESENTATION OUTLINE • What is JavaScript? • Historical Perspective • Basic JavaScript • JavaScript: The Good Parts • JavaScript: The Bad Parts • Languages that compile to JavaScript • ECMAScript 6 MODERN WEB APPLICATION DATABASE SERVER HTML defines structure and content, CSS sets the formatting and appearance, JavaScript adds interactivity to a webpage and allows to create rich web applications. WHY JAVASCRIPT? • JavaScript is the language of the web browser — it is the most widely deployed programming language in history • At the same time, it is one of the most despised and misunderstood programming languages in the world • The amazing thing about JavaScript is that it is possible to get work done with it without knowing much about the language, or even knowing much about programming. It is a language with enormous expressive power. It is even better when you know what you’re doing — JAVASCRIPT: THE GOOD PARTS , DOUGLAS CROCKFORD WHY JAVASCRIPT? • Q: If you had to start over, what are the technologies, languages, paradigms and platforms I need to be up- to-date and mastering in my new world of 2014? • A: Learn one language you can build large systems with AND also learn JavaScript. • JavaScript is the language of the web. The web will persist and the web will win. That's why I suggest you learn JavaScript — S C O T T HANSELMAN , 2 0 1 4 WHAT IS JAVASCRIPT? • JavaScript is a cross-platform, object-oriented, functional, lightweight, small scripting language. • JavaScript contains a standard library of built-in objects, such as Array and Math, and a core set of language elements such as operators, control structures, and statements.
    [Show full text]
  • A Javascript Mode for Yi
    Abstract Yi is a text editor written in the lazy functional programming language Haskell, which makes it possible to define precise editing modes using an abstract syntax tree provided online using the lazy and incremental parser library in Yi. We have developed a JavaScript mode for this editor using this parser library to accurately point out possible errors in the source code. The mode accurately highlights syntactical errors as the user types and pro- vides a verifier to check the semantics of the source code. It supports most of the syntax from JavaScript 1.8 and can readily be extended with more functionality. The mode can also be used as a starting point for future developers of C-like modes for Yi. Writing a responsive parser for Yi proved non-trivial, because of the trade-off between parser performance and accuracy. This report describes how to write a mode for Yi and the different problems encountered during the working process of the JavaScript mode. It also describes in what ways the problems were solved. Sammanfattning Yi är en textredigerare skriven i det lata funktionella programspråket Haskell, som gör det möjligt att definiera noggranna redigeringslägen med hjälp av ett abstrakt syntaxträd som tillhandahålls av det lata och inkre- mentella parsningsbiblioteket i Yi. Vi har utvecklat ett JavaScript-läge till denna redigerare med hjälp av detta parsningsbibliotek för att exakt utpeka möjliga fel i källkoden. Läget markerar syntaktiska fel medan användaren skriver och tillhandahåller en verifierare för att kontrollera semantiken i källkoden. Det stödjer större delen av syntaxen i JavaScript 1.8 och kan enkelt utökas med mer funk- tionalitet.
    [Show full text]
  • Declare Named Function Coffeescript
    Declare Named Function Coffeescript Dannie remains feudalistic after Waring pikes unendurably or understudied any issue. Mickie waters outrageously. Hansel ratchet her saffrons banteringly, drivable and grouchier. This nintendo switch from running code must carefully update clause runs to adjust a named function with leading number of place You down need the add furniture to execute coffee script code in an HTML file In other cases I've seen people scour the attributes of typecoffeescript and typecoffee so they might offer for you fill well. CoffeeScript and Named Functions Software Engineering. Thanks for contributing an hook to socket Overflow! It was expected. Tech Book time Off CoffeeScript Vs Simplifying Lucid Mesh. Function var age myName name names say i len myName. CoffeeScript Interview Questions for beginners and professionals with decent list at top frequently. In its own derivatives of array which others have to motivate us with other languages they different from christian faith: was so why i actually declare named function coffeescript, rather than enforcing classical object. Therefore, where site navigate the funeral was announced for the procedure time. Do exploration spacecraft enter your function invocation can even though, coffeescript file is named functions like java developers have you want a string, dynamic import prelude. This regard where coffeescript can be a fee problem. You declare variables declared in other objects from the bottom, things for declaration location data type errors is where it stopped requiring by opening a lesson here! Already there an account? Behind them in function declaration, or named shorthand method needs to declare it actually quite surprising.
    [Show full text]
  • Jquery Cloudflare Your Company Via Grunt-Contrib-Uglify Used to Build That Jquery
    JavaScript & Security get married Yan Zhu NCC Group SF Open Forum 9/17/15 F YEAH RUSTIC PENNSYLVANIA WEDDING THEME!! About me: ● Security Engineer at Yahoo! by day ● EFF Technology Fellow (Let’s Encrypt, HTTPS Everywhere) ● That’s a real photo of me -> Our story 09.??.1995 08.19.15 JavaScript released! Started investigating JS optimizer security as a side project. ??.??.1991 01.05.11 08.23.15 I was born! Wrote my first line of Got bored and mostly JavaScript. stopped working on this project. This talk is about JavaScript. (sorry not sorry) JAVASCRIPT What runs JS? ● Browsers ● Servers (node/io.js) ● Soon: everything Inspiration GET YOUR COPY TODAY PoC||GTFO 0x08 https://www.alchemistowl.org/pocorgtfo/ “No amount of source-level verification or scrutiny will protect you from using untrusted code. In demonstrating the possibility of this kind of attack, I picked on the C compiler. I could have picked on any program-handling program such as an assembler, a loader, or even hardware microcode. As the level of program gets lower, these bugs will be harder and harder to detect.” Ken Thompson, Reflections on Trusting Trust (1984) seen in the wild! JS isn’t “compiled,” but ... ● Transpilers to JS exist for every major language ● JS sugar (CoffeeScript, Coco, LiveScript, Sibilant) ● Optimizers (Closure, Uglify) ● Static typing (Closure, Flow, TypeScript, asm.js) ● Language extensions (React’s JSX) ● ES6 -> ES5 converter (Babel) more at https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that- compile-to-js Let’s get hackin’ Step 1: Pick a JS library Who uses UglifyJS2? INSERT OVERCROPPED LOGO gruntjs jquery cloudflare your company via grunt-contrib-uglify used to build that jquery.
    [Show full text]
  • Towards Secure and Reusable Web Applications
    Mashups and Modularity: Towards Secure and Reusable Web Applications Antero Taivalsaari Tommi Mikkonen Sun Microsystems Laboratories [email protected] http://research.sun.com/projects/lively 2 Evolution of the Web 1) Simple pages with text and static images only (e.g., http://www.google.com) 2) Animated pages with plug-ins (e.g., http://www.cadillac.com) 3) Rich Internet Applications (e.g., docs.google.com) What's Next? 3 Web Applications – Implications • Web-based software will dramatically change the way people develop, deploy and use software. • No more installations! > Applications will simply run off the Web. • No more upgrades! > Always run the latest application version. • Instant worldwide deployment! > No middlemen or distributors needed. • No CPU dependencies, OS dependencies, ... > The Web is the Platform. 4 Unfortunately... • The web browser was not designed for running real applications. > It was designed in the early 1990s for viewing documents, forms and other page-structured artifacts – not applications. > Programming capabilities on the web were an afterthought, not something inherent in the design of the browser. • Various Rich Internet Application (RIA) technologies have been introduced recently to retrofit application execution capabilities into the web browser. 5 Web Development vs. Conventional Software The Impedance Mismatch Web Development Conventional SW Development - Documents - Applications - Page / form oriented interaction - Direct manipulation - Managed graphics, static layout - Directly drawn, dynamic
    [Show full text]
  • Kaang: a Restful API Generator for the Modern Web
    Kaang: A RESTful API Generator for the Modern Web Ricardo Queirós CRACS & INESC-Porto LA & DI/ESMAD/P.PORTO, Porto, Portugal [email protected] https://orcid.org/0000-0002-1985-6285 Abstract Technology is constantly evolving, as a result, users have become more demanding and the ap- plications more complex. In the realm of Web development, JavaScript is growing in a surprising way, already leaving the boundaries of the browser, mainly due to the advent of Node.js. In fact, JavaScript is constantly being reinvented and, from the ES2015 version, began to include the OO concepts typically found in other programming languages. With Web access being mostly made by mobile devices, developers face now performance challenges and need to perform a plethora of tasks that weren’t necessary a decade ago, such as managing dependencies, bundling files, minifying code, optimizing images and others. Many of these tasks can be achieved by using the right tools for the job. However, developers not only have to know those tools, but they also must know how to access and operate them. This process can be tedious, confusing, time-consuming and error-prone. In this paper, we present Kaang, an automatic generator of RESTFul Web applications. The ultimate goal of Kaang is to minimize the impact of creating a RESTFul service by automating all its workflow (e.g., files structuring, boilerplate code generation, dependencies management, and task building). This kind of generators will benefit two types of users: will help novice developers to decrease their learning curve while facing the new frameworks and libraries commonly found in the modern Web and speed up the work of expert developers avoiding all the repetitive and bureaucratic work.
    [Show full text]
  • JAVASCRIPT TRANSPILERI Završni Rad
    SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Preddiplomski studij JAVASCRIPT TRANSPILERI Završni rad Zvonimir Grubišić Osijek, 2017 Obrazac Z1P - Obrazac za ocjenu završnog rada na preddiplomskom sveučilišnom studiju Osijek, 23.09.2018. Odboru za završne i diplomske ispite Prijedlog ocjene završnog rada Ime i prezime studenta: Zvonimir Grubišić Studij, smjer: Preddiplomski sveučilišni studij Računarstvo Mat. br. studenta, godina upisa: R3637, 29.09.2017. OIB studenta: 50946540896 Mentor: Izv. prof. dr. sc. Irena Galić Sumentor: Hrvoje Leventić Sumentor iz tvrtke: Naslov završnog rada: Javascript transpileri Znanstvena grana rada: Programsko inženjerstvo (zn. polje računarstvo) Predložena ocjena završnog rada: Izvrstan (5) Primjena znanja stečenih na fakultetu: 3 bod/boda Kratko obrazloženje ocjene prema Postignuti rezultati u odnosu na složenost zadatka: 3 bod/boda Kriterijima za ocjenjivanje završnih i Jasnoća pismenog izražavanja: 3 bod/boda diplomskih radova: Razina samostalnosti: 3 razina Datum prijedloga ocjene mentora: 23.09.2018. Datum potvrde ocjene Odbora: 26.09.2018. Potpis: Potpis mentora za predaju konačne verzije rada u Studentsku službu pri završetku studija: Datum: IZJAVA O ORIGINALNOSTI RADA Osijek, 01.10.2018. Ime i prezime studenta: Zvonimir Grubišić Studij: Preddiplomski sveučilišni studij Računarstvo Mat. br. studenta, godina upisa: R3637, 29.09.2017. Ephorus podudaranje [%]: 1% Ovom izjavom izjavljujem da je rad pod nazivom: Javascript transpileri izrađen pod vodstvom mentora Izv. prof. dr. sc. Irena Galić i sumentora Hrvoje Leventić moj vlastiti rad i prema mom najboljem znanju ne sadrži prethodno objavljene ili neobjavljene pisane materijale drugih osoba, osim onih koji su izričito priznati navođenjem literature i drugih izvora informacija. Izjavljujem da je intelektualni sadržaj navedenog rada proizvod mog vlastitog rada, osim u onom dijelu za koji mi je bila potrebna pomoć mentora, sumentora i drugih osoba, a što je izričito navedeno u radu.
    [Show full text]
  • Javascript Overview
    JJAAVVAASSCCRRIIPPTT -- OOVVEERRVVIIEEWW http://www.tutorialspoint.com/javascript/javascript_overview.htm Copyright © tutorialspoint.com What is JavaScript ? Javascript is a dynamic computer programming language. It is lightweight and most commonly used as a part of web pages, whose implementations allow client-side script to interact with the user and make dynamic pages. It is an interpreted programming language with object-oriented capabilities. JavaScript was first known as LiveScript, but Netscape changed its name to JavaScript, possibly because of the excitement being generated by Java. JavaScript made its first appearance in Netscape 2.0 in 1995 with the name LiveScript. The general-purpose core of the language has been embedded in Netscape, Internet Explorer, and other web browsers. The ECMA-262 Specification defined a standard version of the core JavaScript language. JavaScript is a lightweight, interpreted programming language. Designed for creating network-centric applications. Complementary to and integrated with Java. Complementary to and integrated with HTML. Open and cross-platform Client-side JavaScript Client-side JavaScript is the most common form of the language. The script should be included in or referenced by an HTML document for the code to be interpreted by the browser. It means that a web page need not be a static HTML, but can include programs that interact with the user, control the browser, and dynamically create HTML content. The JavaScript client-side mechanism provides many advantages over traditional CGI server-side scripts. For example, you might use JavaScript to check if the user has entered a valid e-mail address in a form field. The JavaScript code is executed when the user submits the form, and only if all the entries are valid, they would be submitted to the Web Server.
    [Show full text]