Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Oracle Launches Java 25 with AI-Ready Features, Long-Term Support Through 2033

Oracle Launches Java 25 with AI-Ready Features, Long-Term Support Through 2033
  • Enhancements to the platform’s performance, security, and stability help organizations drive business growth
  • Long-term support offering enables customers to migrate at their own pace
Oracle today announced the availability of Java 25, the latest version of the world’s number one programming language and development platform. Java 25 (Oracle JDK 25) will help organizations drive business growth by delivering thousands of improvements that boost developer productivity and enhance the platform’s performance, stability, and security. Additionally, Oracle will provide long-term support for Java 25 for at least eight years. Find out more about the JDK 25 technology on the Java 25 livestream at 8:00am CT on Tuesday, September 16th.

“As Java embarks on its fourth decade, it continues to deliver features to help ensure that applications, including those powered by and integrated with AI capabilities, will be highly efficient and scalable across hardware platforms,” said Arnal Dayaratna, research vice president, software development, IDC. “Oracle’s Java technology stewardship continues to lead the evolution of the Java programming language and platform, especially in relation to AI and security, and Java’s consistent six-month release cadence is designed to further accelerate innovation. As a result, Java is well-positioned to deliver a continuous stream of modern features that address next-generation, AI-powered application development.”

“Java marked a significant milestone this year with its 30th anniversary, and the platform and language continues to evolve to help developers quickly and easily build applications infused with innovative AI and security capabilities,” said Georges Saab, senior vice president, Oracle Java Platform and chair, OpenJDK governing board. “Java 25 highlights Oracle’s ongoing investment in features and capabilities that power AI solutions and to simplify the language, making Java easier for new developers and IT teams to learn.”

Oracle plans to offer long-term support for Java 25 for at least eight years, which gives organizations the flexibility to keep applications in production longer with minimal maintenance and eventually migrate on their own terms. Oracle JDK 25 is planned to receive quarterly security and performance updates until September 2028 under the Oracle No-Fee Terms and Conditions (NFTC), and JDK 25 updates released after that date will be offered under the Java SE OTN License (OTN) planned until at least September 2033.

Key JDK Enhancement Proposals (JEPs)

Oracle JDK 25 Language Features

  • JEP 507: Primitive Types in Patterns, instanceof, and switch (Third Preview): Helps developers increase Java programming productivity by making Java more uniform and expressive. For example, developers can enhance pattern matching by removing restrictions pertaining to primitive types that are encountered when using pattern matching, instanceof, and switch. It also allows primitive type patterns in all pattern contexts and extends instanceof and switch to work with all primitive types. Support of primitive types will especially benefit developers building applications that integrate AI inferencing.
  • JEP 511: Module Import Declarations: Helps developers accelerate productivity by enabling them to easily import all the packages exported by a module, without requiring the importing code to be in a module itself. This simplifies the reuse of modular libraries for all developers and helps beginners use third-party libraries and fundamental Java classes without needing to learn where they are located in a package hierarchy. Additionally, developers can avoid the noise of multiple type-import-on-demand declarations when using diverse parts of the API exported by a module, which is beneficial for simple applications that stitch together AI inferencing and workflows from popular libraries.
  • JEP 512: Compact Source Files and Instance Main Methods: Helps make the Java language more accessible to beginners and system and IT administrators by offering a smooth on-ramp to Java programming. Students can write their first programs in a concise manner without needing to understand language features designed for large programs and can grow their code gracefully as their skills expand. In addition, system and IT administrators who may not be Java experts can reduce the ceremony of writing small programs such as scripts and command-line utilities.
  • JEP 513: Flexible Constructor Bodies: Enables developers to improve code safety and reliability by allowing input validation and safe computations before explicitly invoking a constructor. This improves code safety by allowing more natural constructor expressions and enabling field initialization before they are visible to other class code, such as methods called from a superclass constructor. It also improves reliability by preserving the safeguard that prevents subclass constructors from interfering with superclass instantiation.

Oracle JDK 25 Libraries

  • JEP 505: Structured Concurrency (Fifth Preview): Helps developers improve the maintainability, reliability, and observability of multithreaded code by simplifying concurrent programming. By treating groups of related tasks running in different threads as a single unit of work, structured concurrency helps reduce common risks arising from cancellation and shutdown, such as thread leaks and cancellation delays. This is especially beneficial for AI development, which often involves running multiple tasks in parallel.
  • JEP 506: Scoped Values: Help developers increase the ease-of-use, comprehensibility, performance, and robustness of their projects by enabling the sharing of immutable data within and across threads. This particularly benefits applications using AI platforms, web frames, and microservices. In addition, scoped values are easier to reason with than thread-local variables and have lower space and time costs, especially when used together with virtual threads and structured concurrency.
  • JEP 502: Stable Values (Preview): Help developers increase flexibility by introducing an API for stable values, which are objects that hold immutable data. Since stable values are treated as constants by the Java Virtual Machine, they enable the same performance optimizations as declaring a field final while offering greater flexibility in the timing of their initialization.
  • JEP 508: Vector API (10th Incubator): Helps developers improve productivity via an API that expresses vector computations that reliably compile at runtime to optimal vector instructions on supported CPU architectures. As a result, developers can achieve performance superior to equivalent scalar computations, which are often used in AI inference and compute scenarios.

Oracle JDK 25 Security Libraries

  • JEP 470: PEM Encodings of Cryptographic Objects (Preview): Help developers increase productivity via a new API for encoding objects. The API encodes objects that represent cryptographic keys, certificates, and certificate revocation lists into the widely-used, privacy-enhanced mail transport format, and decodes from that format back into objects. This makes it easier for developers to integrate Java applications with security authentication systems and devices such as Yubikeys.
  • JEP 510: Key Derivation Function API: Helps developers prepare for emerging quantum computing environments by offering an API for key derivation functions, which are cryptographic algorithms for deriving additional keys from a secret key and other data. This provides a necessary building block for the support of hybrid public key encryption, which helps enable a smooth transition to quantum-safe encryption.

Oracle JDK 25 Performance Updates

  • JEP 519: Compact Object Headers: Help developers increase productivity by reducing the size of object headers to 64 bits on 64-bit architectures. This improves deployment density and increases data locality, while reducing object sizes and memory footprint on realistic workloads.
  • JEP 514: Ahead-of-Time Command-Line Ergonomics: Help developers accelerate productivity by making it easier to create ahead-of-time caches with no loss of expressiveness. This accelerates the startup of Java applications by simplifying the commands required for common use cases.
  • JEP 515: Ahead-of-Time Method Profiling: Helps developers increase productivity by accelerating application performance. Warmup time is improved by shifting the collection of initial method execution profiles from production runs to training runs, conveying the profiles via the ahead-of-time cache. This enables the JIT compiler to generate native code immediately upon application startup rather than waiting for profiles to be collected. It also eliminates the need for any change to the code of applications, libraries, or frameworks and removes any constraints on application execution.

Oracle JDK 25 Monitoring Updates

  • JEP 509: JFR CPU-Time Profiling (Experimental): Helps developers improve productivity and the efficiency of their programs by enhancing the JDK Flight Recorder (JFR) to capture more accurate CPU-time profiling information on Linux and helping to identify program elements to optimize.
  • JEP 518: JFR Cooperative Sampling: Helps developers increase code reliability by improving the stability of the JFR when it asynchronously samples Java thread stacks. This allows the JFR to minimize safepoint bias in event samplers while avoiding risky heuristics for generating stack traces outside of safepoints. It also allows the creation of sample requests in response to a hardware event or inside a signal handler and reduces the amount of work that the sampler thread must execute.
  • JEP 520: JFR Method Timing & Tracing: Helps developers accelerate productivity by enabling them to identify application performance bottlenecks, optimize code, and find the root causes of bugs. This is achieved by extending the JFR with facilities for method timing and tracing via bytecode instrumentation.
The features in the Java 25 release are a result of continuous collaboration between Oracle and other members of the global Java developer community via OpenJDK and the Java Community Process (JCP). For more details on the features in Java 25, please read the Java 25 technical blog. In addition, the latest Java innovations across the global community will be showcased at JavaOne 2026 in Redwood Shores, CA on March 17-19, 2026. Read more about JavaOne 2026 here and sign up for updates here.

“Since its inception 30 years ago, Java has remained a trusted and secure language for building large-scale enterprise applications,” said Adam Resnick, research manager, modern software development and developer trends, IDC. “As highlighted at this year’s JavaOne conference, Java is poised to expand its reach among novice developers and programming students. New features that simplify complexity and offer immediate feedback are making it easier to build beginner-level programs. Java’s continued evolution reflects a thoughtful balance, broadening its accessibility to less experienced developers while preserving the robustness required for enterprise-grade solutions.”

Supporting the Global Java Community with Innovation in the Cloud

Java delivers increased innovation, performance, efficiency, and cost savings when deployed on Oracle Cloud Infrastructure (OCI), which is the first hyperscale cloud to support Oracle JDK 25. By delivering Oracle Java SE and advanced features such as the Java SE Subscription Enterprise Performance Pack at no additional charge on OCI, Java 25 helps developers create and deploy applications that run faster, better, and with optimized cost-performance.

The Oracle Java SE Universal Subscription provides customers with best-in-class support. It includes the Java SE Subscription Enterprise Performance Pack, triage support for the entire Java portfolio, the Java Management Service, and the flexibility to upgrade at the pace of customers’ businesses. This helps IT teams manage complexity, mitigate security risks, and contain costs.

In addition to the benefits of Java on OCI and the Oracle Java Universal SE Subscription, Java 25 delivers improved application performance and a wide range of AI and security capabilities, including post-quantum cryptography (PQC) support, to help improve the performance, stability, and security of Java SE Platform implementations and the JDK.

Leaders Across the Global Java Community Welcome Oracle JDK 25

“When Java moved to having a release every six months, it seemed impossible that interesting new features could be split into small enough pieces to deliver this way – and it felt like it was possible some releases might not even have much in them,” said Trisha Gee, head of advocacy, Gradle, Inc. “How wrong we were! Each new Java release has interesting and useful features, and it has been a wonderful lesson in how to split up large deliverables into small, independent pieces. For example, the various pattern matching features stand alone and can be delivered independently, but all add up to a fantastic set of new features for Java and a new way for Java developers to think about how to solve their problems. Java keeps going from strength to strength.”

“JEP 512 introduces ‘Compact Source Files and Instance Main Methods’ which dramatically simplifies Java for beginners by allowing them to write programs without the traditional boilerplate code public static void main(String[] args),” said Rémi Forax, associate professor, Université Gustave Eiffel. “Students can now start with simple programs and gradually expand their understanding to more advanced concepts as they grow, creating a smooth learning path from basic programming concepts to full object-oriented programming.”

"My favorite parts of Java 25 are compact source files, instance main methods, and module import declarations, as these features create a low ceremony on-ramp to Java for beginning programmers,” said Cay Horstmann, professor emeritus, San José State University. “They also benefit experienced programmers, expanding the reach of Java to small, everyday tasks. I find it very satisfying to rewrite brittle shell or Python scripts in Java – an industrial-strength, strongly-typed language with great tool support."

"When the six-month feature release cadence was announced with Java 9, I was one of the biggest skeptics, and even said so publicly. Would Oracle be able to pull it off? I had my doubts, as we had gotten used to a new release every three years,” said Dr. Heinz M. Kabutz, author, The Java Specialists’ Newsletter. “But indeed Oracle has pulled it off, and with gusto. Under Oracle's stewardship and with a huge community driving this forward, Java is leap-frogging other languages. Records, compact source files, and module imports make the on-ramp for Java so much easier, and virtual threads, foreign memory API, vector API, and ZGC make Java suitable for building technically advanced scalable systems."

“Java’s greatest strength is its community. At JUG Oberpfalz, we’re restarting our ‘(Re)Start with Java’ talks in 2025, and developers are always impressed by how much the language has evolved,” said Richard Fichtner, CEO, XDEV Software GmbH. “Modern Java is more productive, safe, and innovative than ever — proof of what community and collaboration can achieve.”

To learn more about Java and its global ecosystem, please visit:Dev.java: The official portal for learning Java
Inside.java: News and views from the members of the Java Team at Oracle
Java YouTube: The official Java YouTube channel for Java learning videos. 

Additional Resources


About Oracle

Oracle offers integrated suites of applications plus secure, autonomous infrastructure in the Oracle Cloud. For more information about Oracle (NYSE: ORCL), please visit us at oracle.com.

Future Product Disclaimer

The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation.

Trademarks

Oracle, Java, MySQL, and NetSuite are registered trademarks of Oracle Corporation. NetSuite was the first cloud company—ushering in the new era of cloud computing.

Tips for Using Jira/Jira Scripting


Not sure how you can utilize Jira in the best possible ways? Follow us to get the perfect guidance and tips.

Jira is an impactful tool, but many people are not very familiar with its full aspects. To get the maximum benefits from Jira, you need to make the most out of it.

Here are some important tips on how you can make the maximum out of Jira.

Utilize filter subscriptions for reminders.

A filter subscription is the best way to get notifications regarding the tasks to complete. Initially, you have to make a Jira issue and assign it to yourself only. After that, incorporate a due date. Then make a filter to find all the issues which are due for the next number of days. Next, just save it as a new filter. Ultimately make a filter subscription which you can send as an email when a due date is coming. This is appropriate for recurring tasks, Jira maintenance items etc.

Make the workflow you are using as your model

One of the major mistakes people make while incorporating Jira is to model certain ideal workflow with constraints and specific transitions. If this workflow does not complement the actual process of work done by the business, a lot of friction will be produced and dismantle the Jira adoption as well. So choose a workflow that goes with the reality of your operations.

Make project aggregation effortlessly.

Often people are afraid of creating projects on a single board. But this can be done easily. Create your projects to support the teams working for you, and then create specific boards on top of that to provide an overview which the stakeholders will need.

Make your personal dashboards.

To make the most out of Jira, make sure you create a customizable dashboard for your personal use so that when you enter Jira, you get a proper view of the elements you need to see.

Limit the required fields.

Sometimes the task never matches the complexity of the operations, which can cause further issues in the operations. So make sure the effort given behind making a task complements the complexity of the work that is being described.

Decrease the quality required to make a task. Enhance the quality required to make the task workable.

Forming a task should not be your top priority, so enhance the task with information over time. Make sure there is a no or low barrier for creating a task. Later you can add certain requirements to make it workable.

Form a personal board for your own purpose.

Utilizing a filter can create a board just for you, so take the tasks which you are interested in. Segregating this board from your project boards will help in keeping your operations well managed.

Don’t ignore the control chart.

Spontaneous improvement is required for better functioning. That is why make sure to keep an eye on the control chart, as it will help in giving you a clear view of the outcome of your projects. Make sure you check it out before going into a retrospective.

Jira is a comprehensive platform and making the most out of it sometimes can be an overwhelming task. Make sure your Jira marketplace workflows are well managed by following the above-mentioned tips.

Contentstack Launches TechSurf2021, the Ultimate Coding Championship



Contentstack, the leading Content Experience Platform (CXP), today announced it is hosting the 2021 edition of its virtual coding challenge, TechSurf2021. Student programmers currently in the third and the final year of college, as well young professionals graduating in 2019, 2020 and 2021, are invited to participate in this challenge.

Participants to the 2021 competition will be tasked to use coding and problem-solving skills to solve complex tasks that IT professionals face in the real-world. Through this process, participants will also have the opportunity to receive mentorship from some of the best minds in the business.

The competition, which is open to Indian citizens only, officially starts on 15 September 2021 and will have two stages. Each stage is designed to assess the different skills of young programmers. Those who excel and make it to the final challenge will compete for the top prize of ₹4 Lakhs and two runners-up prizes worth ₹2 Lakhs and ₹1 Lakh. The last date of submission for the eligible participants for the final coding round is 7 November 2021. The top participants will also have an opportunity to land lucrative jobs at Contentstack India’s Product Engineering Centre of Excellence.

Registration for the competition closes on 20 September 2021 and the form can be found at the following link: www.contentstack.com/techsurf21/.

About Contentstack

Contentstack – the pioneering Agile Content Management System (CMS) – empowers marketers and developers to collaborate around content like never before. Together, they can orchestrate superior customer journeys and deliver dynamic digital experiences across channels, audiences, brands and regions. Companies such as Chase, Express, Holiday Inn, Icelandair, Mattel, McDonald's, Mitsubishi, Riot Games, Sephora and Shell trust Contentstack to power their most critical content experiences. Famous for its Care Without Compromise™, Contentstack has the industry's highest customer satisfaction. As a founder of the MACH Alliance, Contentstack advocates for open and composable technology that is Microservices-based, API-first, Cloud-native SaaS, and Headless. Learn more at http://www.contentstack.com

Code Obfuscation: What it is and should You Use It?



Certain programming languages like .NET and Java can very easily be decompiled to readable sources. There are a lot of definitions about the code obfuscation, but to explain it better we the code obfuscation is the process that makes your application binaries slightly harder to read with a decompiler. It is a very important tool to protect the intellectual property of your business.

Why Obfuscate Code?

Some compiled languages get converted directly to bytecode, for example C++. If you want to reverse engineer, the only way to work is with a disassembler, which is a complicated and arduous process. Though, it is not impossible, inferring high level app logic from a stream of assembly language is quite difficult.

On the other side, languages like Java and C# are not compiled for any particular OS. They are more complied to an intermediary language, such as MSIL from .NET’s. This intermediary language is very similar to assembly, but it's very easily converted back into the source code. So this does mean that in case you have a executable or public Dynamic-link library (DLL), anyone who possesses a copy of your executable are able to open it up in, let's say dotPeek (.NET decompiler), and directly read your source code, and copy it as well.

Any .NET DLL can be plugged into a decompiler, so code obfuscation cannot prevent this process. But what obfuscation does is use a number of things in order to make the source code very annoying to read and debug.

Renaming is the simplest form of this entity. It is a very common practice to properly name all of the methods, variables, parameters and classes according to what function they do. But of course you don’t have to do that, so there is nothing that is really stopping you from naming them with lowercase L’s and I, or random similar combinations of unicode characters, just to make the code very hard to read and debug. For the computer it is all the same, but to a human is very difficult to distinguish.

It could look something like this:

IlIIIIlIIIllIIIllIIll

lIIIllIIllIlIIIIlIIIl

(neat, right?)

This process will be handled automatically by a basic obfuscator, taking the output from the build and then converting it to something that is really, really hard to read. By doing this there is no performance decrease to non-obfuscated code.

There are types of advanced obfuscators that can make it possible to change the structure of the source code. This means it can replace control structures with identical syntax but it looks more complicated.


It can also embed a code that doesn't do anything, but it would make it harder to read for the decompiler. This means the source would look like 'spaghetti code' - which means it would annoy anyone who tries to read the code.


Hiding strings - is one of the common things. In this way, string obfuscation can replace strings with encoded messages - which are also decrypted, and it makes it difficult to search for them from a decompiler.


There are lots of options for obfuscators, it depends on the language the obfuscators are using. For example, Obfuscar, ProGuard, Javascript-obfuscator. etc.

Another option: You can convert to a Compiled Language

Actually, you can convert one programming language to another one, isn't that a hard or crazy idea. It is an effective way to secure games from cracking, and it is an important step to do when protecting from piracy and cheaters. For example, Unity uses an IL2CPP converter to transform .NET code into C++ bytecode.

Is it necessary to Obfuscate?

Untrusted environments exist - so if you are using a code, and you want to secure it, it is important to use an obfuscator to make decompiling hard.

Securing your code is a must. Using an obfuscator is a must. If you don't want anybody to decompile your app, you should try switching to a language that doesn't have these problems.


Get Your Oracle Certified Associate Java SE 8 Programmer Certification and Pass 1Z0-808 Exam with Examsnap

IT is a relatively new and at the same time one of the fastest growing fields in the world. The applications of computer science are numerous, and that is what encourages people to keep on researching new things in the field. There are a few companies that are currently leading the market of technology developments. One of such companies is Oracle which has been around for quite some time now and has produced some of the greatest cloud and database technologies we use every day.

Oracle is much more than a company that produces computer software and technologies. Oracle is also known for offering a number of IT certifications. For those who do not know, Oracle is the birthplace of Java, therefore it would only be fitting for Oracle to offer a certification that revolves around this programming language. This article is dedicated to Oracle Certified Associate, Java SE 8 Programmer, one of the most sought-after Oracle credentials on the associate level. We will also discuss the details of 1Z0-808, the only exam you need to clear in order to get OCA Java SE 8 Programmer.

Oracle Certified Associate, Java SE 8 Programmer

This associate-level credential is designed to validate the candidate’s basic knowledge of Java fundamentals. This credential equips you with the skills necessary to prepare the ground for your future Java developer career. To get certified, you need to pass just one exam, and its code is 1Z0-808. Below you will find a description of 1Z0-808: Java SE 8 Programmer I and some tips to prepare for your certification test.

Oracle Java SE 8 Programmer I Exam: Things to Know

Before you schedule your Oracle 1Z0-808 exam, there are some things that you need to know. Oracle 1Z0-808 is a difficult exam and that is why it is important to go in prepared. All of the questions that you will see in the exam are multiple-choice, and the test consists of a total of 70 questions. Each candidate is given exactly 150 minutes to answer all of these questions. 150 minutes might seem a lot, but you still need to manage your time properly. Don’t rush, take the appropriate amount of time to answer each question. If you wish to pass the exam, then you must ensure that you get at least 65%.

Books for Oracle 1Z0-808 Exam

When you are preparing for Oracle 1Z0-808 exam, then you will need all the help that you can get. So, you should not ignore any books that you find. There are a number of books that you can find on this topic, however, it would be very difficult to filter out the best ones. So, here you will find some of the best books to refer during your 1Z0-808 preparation.


  1. The first book that you should turn your attention to is the OCA Java SE 8 Programmer I Certification Guide authored by Mala Gupta. The book is well-written and most importantly, it is easy to understand. The writer has properly explained the latest features of Java 8 with a lot of diagrams, flowcharts, and other visual aids. The book covers all the topics that are part of Oracle 1Z0-808 test and has a few additional chapters which reveal interesting details about Java.

  2. OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide is the next book that you should consider. If you don’t want to rely solely on online learning platforms, then this book is a great alternative. It is written by Scott Selikoff and Jeanne Boyarsky, and they have done an immaculate job at covering all the main 1Z0-808 topics. The book contains a lot of practice examples explaining all the necessary concepts of Java.



Apart from the books, you can also opt for instructor-led and online courses offered by Oracle.

Prepare with Examsnap

If you are still confused about how you are going to prepare for Oracle 1Z0-808 exam, then you should consider using the Examsnap website. By purchasing the Examsnap preparation bundle for this test, you will get access to a lot of useful resources. The Examsnap bundle comes with a ton of video lectures and practice questions. Remember that 1Z0-808 is completely based on multiple-choice questions, which means that you will have to answer quickly. By taking practice tests from Examsnap, you can train yourself to answer correctly in the given time limit. Time management is another important thing that you need to keep in mind.

My Experience with Oracle 1Z0-808 Exam

My preparation for 1Z0-808 exam was an eye-opening experience. The first thing that I did was to enroll in an online course by Examsnap, and it was one of the most important decisions. The best thing about the course is that you get firsthand information from a specialist.

The next thing that I would advise is that when you are working with Java, you need to keep an eye out for syntactical errors. Also, it is quite difficult to understand certain concepts of Java in a short span of time, and this is where flowcharts and UML diagrams can be helpful.

Conclusion

OCA Java SE 8 Programmer is currently one of the most popular certifications that you can find. By passing 1Z0-808 exam, you will become an Oracle Certified Associate, and this will open a lot of new doors for you in the future.

Programing in R for Data Science

R is defined as an open-source language and environment for performing statistical computations and graphics with its thousands of inbuilt or user created libraries. The outstanding journey of R is marked with the text editor to interactive R studio and Jupyter notebook attracting data scientists. It was the result of efforts made by R users across the world. The powerful packages offered by R Programming becoming more powerful and useful with time. Packages such as dplyr, readr, SparkR, ggplot2 etc., holds the capability to visualise, manipulate and compute faster.

Why R?



1). R is open source and free to download and use.

2). It is broadly used for data science and machine learning.

3). R can be easily executed on multiple platforms such as Windows, MacOS, Linux etc.

4). More than 5000 packages are offered by R to simplify your work.

How to install R/Rstudio?

You can download Rstudio from https://www.rstudio.com/products/rstudio/download and easily install it by selecting R studio installer on the basis of your operating system. Click next..next.. and finish.

Rstudio Interface includes:

1). R Console: R console presents the output delivered by a successful program execution. You can also write down your code program inside the console. The only drawback is that the written code can not be traced further in history. This problem is replaced with the R script.

2). R script: R script provides space to write your program codes. To execute the written code, you simply need to press Ctrl + Enter button or you can click on the ‘Run’ button at the top right corner.

3). R environment: The R environment shows the externally added elements set. These elements can be variables, functions, data sets etc. To cross check your uploaded data in R, you can go through this region.

4). Graphical Output: it displays the graphs created during the data analysis. It doesn’t only include graphs, but you can include the various packages embedded in R’s documentation.

Installing R Packages:



The main power of R lies under its outstanding packages. Most of the operations like data handling tasks are managed by two ways in R:

1). By using R packages
2). With R base functions

To install an R package, type in console:
install.packages(“package_name”)


Basic Features:

R contains five classes of objects. That is:

1). Numeric- real numbers
2). Character
3). Integer- whole numbers
4). Logical
5). Complex

These objects can have attributes such as:

1). Dimensions
2). Class
3). Names
4). Length

These attributes are accessed with attribute() function.

Data Types in R:

R contains various data types including matrices, vectors such as numeric, integer etc., data frames.

Vector:

Vector holds object of same class, but you can also mix objects from different class.

You can convert the vector class with “as.” command.
>deg<-0.8

>class(deg)

>”integer”

>as.numeric(deg)


List:
A list contains the elements of different data types. The symbol [[1]] represents the first element of the list and so on.

E.g., >hello_list<-list(11, “ew”, TRUE, 1+4i)

 

Matrices:

A vector represented with dimension attribute i.e., row and column, is known as matrix. It is a two dimensional data structure which contains the elements of same class.

E.g., >first_matrix<-matrix(1:8, nrow=2, ncol=4)

 

Data Frame:

The data frame is used to store the tabular data. From matrix,, data frame is only differ in fact that it can store vectors with different classes. Every column of the data frame is same as the list.

> df <- data.frame( emname = c(“reli”, “jessy”, “polli”, “marcus”), marks = c(23,45,65,67))

 

The variables can be distinguish in two categories:

1). Continuous variables: It represents any form such that 2,5,6,7,8.99 etc.

2). Categorical variable: They represent only discrete values such that 1,2,5,6,7,88 etc.

 

Control Structures:

 

It controls the flow of the written code or program inside a function. A function represents the multiple line code written to reduce the effort of repetitive tasks. The control structure in R programming are:

 

If, else- used to test conditions.
if(<conditions>) {

#statement

}else

{

#statement

}

for- for is used to execute a loop within bounded times of iterations.
for(<search condition>) {

#statement

}

while-  It is used to test conditions and execute the statement once the condition met true.
# condition initialisation

Marks <- 20

# check if mark is less than 33

while(Marks<33){

print(Marks)

Marks <- Marks + 1

}

R Packages:  

R offers more than seven thousand of packages to implement in your program. Here I’m discussing few useful packages for modelling:

1). For importing Data: R provides various packages with multiple formats like .txt, .json, .sql etc. If you want to quickly import large files then you can install packages like data.table, sqldf, jsonlite, RMySQL or readr.

2). Data manipulation: R packages for data collection allows users to perform simple to advanced computational tasks easily and quickly. You can install and use packages like dplyr, tidyr, stringr, plyr etc.

3). Data Visualisation: R can leverage with the incredible packages and commands for graph plotting. In case of creating advanced graphics, the scenario becomes complex. Thus you can install and use package like ggplot2.

4). Modelling or Machine Learning: The package named caret is powerful enough to deal with modeling, allows you to develop machine learning model. Beside it,  depending upon your need or useful algorithms, you can use packages like randomForest, gbm, rpart etc.

Data Analysis in R: 

Data exploration is an important stage of predictive modelling. You can create a good model only if you know how to explore the data.

You can download the data set for the practical work from various sources available over the internet. Lets understand few terms first:

Dependent or Response Variable: The response variable in data set is defined as the one over which the predictions to be make.

Independent or Predictor Variable: Predictor variables are the one which are used to make prediction on the response variable.

Train Data: The predictive model is created on the train data set. The best way to recognise the train data is that it is always included with the response variable.

Test Data: Once you have created the model, you need to check its accuracy. This is where the test data is used. It requires fewer observations in comparison to train data set and does not include the response variable.

Now let's start with importing data set and perform exploration on it.
Path <- “.../data/downloaded”
#set working directory path
setwd(path)


Maintain train and test files inside your working directory. It will reduce the unnecessary troubles in future. Once the directory is completely maintained, you can import the .csv files by entering command:
Train <- read.csv(“Train_7abcbfh67u.csv”)

Test <- read.csv(“Test_jikl45hrjkl.csv”)

To cross check whether the uploaded operation is performed successfully, see the R environment such as:
//to check dimensions
>dim(train)
>dim(test)


It will represent the total number of rows and columns in train and test data set. Now, To check the variables and its types, write the command below:

>str(train)


Now you have checked every data types and variables in your data set. It's time for quick data exploration. The beginning is marked with checking the missing values. Type command:

>table(is.na(train))


It will help you to recognise the total missing value in your data set. Now, check for the variables in which these values are missing. It is strongly recommended to check for the missing values in your data during data exploration.

>colSums(is.na(train))
>summary(train)


These collected inference will lead you to treat variables in accurate and precise manner. 

Graphical Representation:



Now to present these variables in a visual format, you need graphs. Here the data is analysed with two ways:

1). Univariate Analysis: performed with single variable.

2). Bivariate Analysis: performed with two variables.

To recognise the hidden insights from these data set, you need to perform the bivariate analysis.


Install ggplot2 package for visualising these data.



> ggplot(train, aes(x= first_parameter, y = second_parameter)) + geom_point(size= 3.5, color= “blue”) + xlab(“first_parameter”) + ylab(“second_parameter + ggtitle(“visibility of the data”)


Dealing with Continuous or Categorical Variables:

These variables need special attention during the analysis. Find the missing variable and make the imputation by using the meridian.



>combi$parameter<-ifelse(combi$parameter==0, median(combi$parameter), combi$parameter)


Now move to categorical variables and correct the mismatch found during the data exploration.

> levels(combi$parameter)[1] <- “Other”
>library(plyr)
>combi$parameter <- revalue(combi$parameter, c(“LF”= “Low Fat”, “reg” = “Regular”))
>combi$parameter <- revalue(combi$parameter, c(“low fat” = “Low Fat”))


Data Manipulation:

Create new variables for extracting and presenting new information to the model. This way model can make accurate predictions. Now is the time to find the variables which can affect the your model. It is the part of feature engineering.

>library(dplyr)


Label Encoding:  Label encoding refers to the numerically replacement or encoding the various level for a categorical variable. Let's check out from above example we have two levels that is Low Fat and Regular for our parameter. So we can encode the Regular with 1 and Low Fat with 0 by the expression:
>combi$parameter <- ifelse(cobi$parameter == “Regular”,1,0)

One Hot Encoding: It splits the categorical variable in unique levels and removes the main one from data set.

>sample <- select(combi, parameter)
>demo <- data.frame(model.matrix(~.-1,sample))
>head(demo)


Here model.matrix will create a matrix with the encoded variables.

~.-1 represents that R will encode all the variables within the frame.

Predictive Modeling with Machine Learning:

Before starting, first remove the columns which are converted by using other variables or are identifier variables with the help of the dplyr package:

> combi <-  select(combi, -c(parameter1, parameter2, parameter3, parameter4, parameter5))
> str(combi)


a). Linear (Multiple) Regression:



The main role of multiple regression is in case of various predictors and continuity in response variable. It relies on following assumptions:

1). Linear relationship between the response and predictor variables.

2). Predictor variables should not correlate on each other otherwise it may cause multicollinearity.

3). Error terms could have constant variance with uncorrelated behaviour.

Now create a regression model on the data set with the help of lm() function:
> linear_model <- lm(parameter ~ . , data = new_train)

> summary(linear_model)

Find out the amount of correlation:
> cor(new_train)


b). Decision Trees:

Use rpart package to implement the decision tree algorithm in your model building. Also, to validate the technique, you can use caret package. The decision trees in R include the complexity parameters (cp) which represents the tradeoff between the accuracy and model complexity. Smaller cp will result in bigger tree and larger cp will provide smaller tree which might be overfit or underfit the model respectively.

//Load Useful Libraries
> library(rpart)
> library(rpart.plot)
> library(caret)
//set tree control parameters
> fitControl <- trainControl(method = “cv”, number= 5)
> cartGrid <- expand.grid(.cp=(2.50)*0.02)

//Decision Tree

> tree_model <- train(parameter1 ~ ., data = new_train, method = “rpart”, trControl = fitControl, trueGrid = cartGrid)
> print (tree_model)


Now, lets create a decision tree with cp as a complexity parameter. It can be 0.01, 0.02 depending upon the model with least cp.
>main_tree <- rpart(parameter ~ . , data = new_train, control = rpart.control(cp=x))
> prp(main_tree)


It will present the final result with improved RMSE.

Final Words:



In this tutorial i’ve covered the basic to advanced model building concept. The decision tree obtained doesn't use encoded variables in the model. The main motive was to help the beginners with predictive modeling in R.

Programmr - An Online Interactive Lab for Students to Practice Programming

programmr

All the programming enthusiasts out there have a reason to rejoice. Now, practicing programming has become extremely easy and fun with Programmr. Programmr is an online interactive lab for programming students and enthusiasts, who want to practice, learn and become proficient in programming.

Programmr prides itself of being the world's best online coding simulators. It is the only portal available that offers full fledged online coding support for more than 10 platforms which include Android, Java, Ruby, iOS, .NET and SQL. At Programmr’s online interactive lab one can code, compile and run projects in any language right in the browser.

Programmr even lets you create your own applications and then simply share it with the world just as you share a YouTube video. The company’s target audience is aspiring programmers and students who want to test, practice and sharpen their coding skills. The portal has different zones like Ruby, C#, C++, Python or Java Zones etc. which help one learn and excel in a programming language of their own choice.

The online portal's new Auto-faculty module helps one assess their skills in any programming language by taking part in hands on exercises. With their B2B API, anyone and everyone can integrate live code widgets in their websites.

So far, over 330,000 programs have been run to date at Programmr, with 65,000 attempted challenges and nearly 2,000 submitted projects.

At Programmr, the team believes that programming is best learned at your own suited pace and environment. They further believe that one doesn't needs to go to an expensive Information Technology College or enroll in pricy corporate trainings in order to become a good programmer when you can do the same at the comfort of your own house and without paying any money at all. At Programmr, they admire and respect the organisations which teach coding to students online. The company therefore wants to help these organisations by giving them access to its code simulators which will enable them to provide their students with hands on learning, assessment and practice.

Programmr was founded by Rajesh Moorjani back in 2011. He got the idea for Programmr while he was himself enrolled in an advanced programming course at a local community college. While studying there he realized that there needs to be a cheaper and better way to learn programming technologies and that too from the comfort of your own home and then is when he came up with Programmr.

Programmr - An Online Interactive Lab for Students to Practice Programming

programmr

All the programming enthusiasts out there have a reason to rejoice. Now, practicing programming has become extremely easy and fun with Programmr. Programmr is an online interactive lab for programming students and enthusiasts, who want to practice, learn and become proficient in programming.

Programmr prides itself of being the world's best online coding simulators. It is the only portal available that offers full fledged online coding support for more than 10 platforms which include Android, Java, Ruby, iOS, .NET and SQL. At Programmr’s online interactive lab one can code, compile and run projects in any language right in the browser.

Programmr even lets you create your own applications and then simply share it with the world just as you share a YouTube video. The company’s target audience is aspiring programmers and students who want to test, practice and sharpen their coding skills. The portal has different zones like Ruby, C#, C++, Python or Java Zones etc. which help one learn and excel in a programming language of their own choice.

The online portal's new Auto-faculty module helps one assess their skills in any programming language by taking part in hands on exercises. With their B2B API, anyone and everyone can integrate live code widgets in their websites.

So far, over 330,000 programs have been run to date at Programmr, with 65,000 attempted challenges and nearly 2,000 submitted projects.

At Programmr, the team believes that programming is best learned at your own suited pace and environment. They further believe that one doesn't needs to go to an expensive Information Technology College or enroll in pricy corporate trainings in order to become a good programmer when you can do the same at the comfort of your own house and without paying any money at all. At Programmr, they admire and respect the organisations which teach coding to students online. The company therefore wants to help these organisations by giving them access to its code simulators which will enable them to provide their students with hands on learning, assessment and practice.

Programmr was founded by Rajesh Moorjani back in 2011. He got the idea for Programmr while he was himself enrolled in an advanced programming course at a local community college. While studying there he realized that there needs to be a cheaper and better way to learn programming technologies and that too from the comfort of your own home and then is when he came up with Programmr.

AlgoLint - Online Algorithm Practice Tool for C/C++, Java, Ruby or Python

algolint

Algolint is a new online algorithm practice tool, the simplest code editor and personal notes application. It i actually an online algorithm practice tool which provide algorithm enthusiast, learners and students an open platform to write and practice algorithm problems online. User can write code in C/C++, Java, Ruby and Python. Students can use basic code template to solve their problem, which can save their time during practice. Also they can save their own template to use for their further practice.

User can add their Dropbox account here so that all their practice code will be automatically sync with their storage. Its an open source website with clean and simple user interface. User can select their preferences for editor to make it more convenient for their usage.

To practice algorithms you can use templates for base algorithms and save your code as template to use later. You can also add dropbox to your account and sync all your practice codes to your dropbox. Moreover, you can create your public profile and share your public codes to the world.

Parent online entity behind Algolint is Killermobi, which used to provide free mobile software and applications.

Rishabh Tripathi who is the developer of AlgoLint, is a software professional who started killermobi.com in his college days with 6 mobile application 4 year back, and got more then 1 crore download across all channel, coming this time with a simple open source tool (algolint.com) for software professional and students who wanted to practice algorithms and coding online. He is currently working as a product manager in a startup.

15 Must Have PHP Tools for Coders

15 Must Have PHP Tools for Coders

PHP is one of the most widely spread server-side scripting languages. 244 million websites, 20 million indexed domains and 2.1 million web servers – the statistics as of July 2013 are quite impressive. It's no wonder that major websites like Facebook and WordPress prefer it over other side-scripting languages, including Python and Ruby. There are numerous PHP frameworks, and web content management systems written in PHP include such popular names as Joomla, MediaWiki, Drupal, Moodle and many others. The above mentioned figures suggest hundreds of thousands of active PHP developers worldwide.

There are many reasons why PHP is so popular – it is fast, has thorough documentation, is supported by a large enthusiastic community and last but not least it has free and open source libraries, which bring down the cost of web development.

In order to make the PHP coding process smoother, developers have come up with various coding solutions. Some even say that it is impossible to become an effective PHP developer without additional scripts. Let's have a look at some of the tools designed specifically to make your code writing experience easier:

Debugging Tools


15 Must Have PHP Tools for Coders

  • Xdebug is a very popular debugging extension, which quickly finds bugs in your source code.
    Webgrind is a PHP5 cross-platform tool that is designed for a “quick 'n' dirty” fix, as the developers write on the official page.

  • PHP_Dyn is your choice if you are looking for open source software. This useful extension might come in handy if you were not satisfied with other PHP scripts.



Security Tools:


15 Must Have PHP Tools for Coders

  • Scavenger is designed for real-time management of vulnerabilities. This tool uses open-source technologies and it may interest system administrators because it helps them track and respond  to vulnerability findings.

  • Securimage will interest you if you want to protect your website from spammers. This script generates CAPTCHA codes and complex images.



Optimization and Testing Tools:


15 Must Have PHP Tools for Coders

  • SimpleTest is a framework that is designed to help you test how your code will run on a webpage. It has support for SSL, frames, forms, proxies and has basic authentication.

  • PHP_CodeSniffer is a must have tool if you are trying to solve the problem of uniform coding styles for large teams and projects. This script detects conformance to predefined PHP standards.

  • PHPUnit helps you test how stable and scalable your web application is. It works with the latest version of PHP and is really helpful for testing.



Image and Graphs Management Tools:


15 Must Have PHP Tools for Coders

  • pChart is a free library to draw charts for PHP. It works both with SQL and CSV formats.

  • MagickWand For PHP is your choice if you want to quickly add image-editing options to your PHP applications.

  • PHP/SWF Charts is powerful for creating web charts and graphs. It uses dynamic data.



Useful Extensions:


15 Must Have PHP Tools for Coders

  • SimplePie is an easy-to-use feed parser that helps you work with RSS feeds.

  • TCPDF will be useful for you if you want to generate PDF documents.

  • PHPMathPublisher allows you to publish mathematical documents online without the need to install LaTeX or MathML to the server.

  • Phormer is a handy application that manages your photo gallery and lets you store, categorize and trim your photos right from the browser.


 

rob-greenberg-photoGuest Post:
The above guest post has been contributed by Rob Greenberg - His work is related to copyright management and to cooperate with those companies who develop plagiarism software such as www.plagiarismdetect.com and others.Rob also writes for the company’s blog and also takes part in testing plagiarism checking software.

The Fight for Most Popular Programming Languages

CodeEval recently released a statistics for - Most Popular Programming Languages of 2013. As CodeEval is a platform used by programmers/ developers to showcase their skills by participating challenges, win cash/prizes and impress employers with their technical skills. This statistics and figures are based on a sample size of over 100,000+ challenges processed from participants who have run challenges on CodeEval in 2012.

However, on other hand another list released by TIOBE, a company specialized in assessing and tracking the quality of software differ with the one releases by CodeEval. First let's see what CodeEval statistics has to say:

Most Popular Programming Languages of 2013


According to CodeEval stats Python is on top but lost 7% of its market comparing to last years stats of CodeEval, Java gained 3.5% squeezing the gap to just 4% between the two leaders. Perl lost almost 21% and PHP lost almost 8%. The biggest gainer was C# which leaped up 500% while C was up a modest 22.5%.

According to TIOBE stats C is on top, whereas as per CodeEval its not even among Top 5 most amusing is position of language - Python which is on no.8 unlike to CodeEval list. Unlike to CodeEval TIOBE ratings are calculated by counting hits of search queries on most popular search engines, the number of hits determines the ratings of a language.

TIOBE Programming Community Index for January 2013 -

TIOBE Programming Community Index for January 2013

The two stats differ in many ways may because of the criteria they have taken to prepare list, CodeEval has taken its own users data from its own users on other hand TIOBE used search engine  queries made, however the common things are C is evergreen language along with Java and PHP.

Although if you look at Wikipedia list of programming languages used in most popular websites you will see that Java is most popular followed by C, C++ and PHP.

 

Market Reports

Market Report & Surveys
IndianWeb2.com © all rights reserved