Navigation Bar

Tuesday, September 8, 2026

The Oracle Story

                              No one after lighting a lamp puts it under the bushel basket, but on the lampstand, and it gives light to all in the house
                                                                                                                                                             Mathew 5:15

Oracle corporation, initially called Software Development Laboratories, was founded in 1977 by Larry Elison and Bob Miner, computer programmers at Ampex Corporation, an American electronics company along with Ed Oates, Elison's supervisor at Ampex. The idea for the relational database was inspired by a paper by Edgar F Codd that outlined a relational model. They had the vison of making this data management concept commercial as it arranged large amounts of data efficiently and also enabled quick retrieval. Thus the trio started developing the program based on Codds theory and in 1979 the company released Oracle, the earliest commercial relational database program using structured query language. 



Once he learned the skills and concepts for relational databases Larry Ellison began to pursue his dream to start a data management company now know as Oracle. In the early years it was in competition with IBM which was also in the race to develop a relational database at that time. The IBM database is IBM DB2. But of the two Oracle is more widely used and popular.

Its first customer was the US Air Force which used the program at its air force base.

Oracle has grown from its humble beginnings as one of a number of databases available in the 1970s to the overwhelming market leader today.

In 1978 the first Oracle software was born, written in assembly language running on PDP-11 under RSX-11 in 128K memory. The first Oracle version was never released and the implementation separated oracle code from user code. The name Oracle came from the code name of a CIA project that the three original founders Elison, Bob and Ed had worked on in Amex Corporation.



In the year 1979,they offered the first commercial SQL relational database management system. The second version of Oracle released ran on PDP-11 hardware and they named it as Oracle v2 to capture more customers and they starting promoting it on the VAX platform.
In 1984 the database software was ported to the PC platform with the MS-DOS version 4.1.4 running on 512K memory.
In 1985 it was released to operate in client-server mode.

Initial funding was through personal funding of its founders and Venture Capitalists and it went public in 1986 and was then financed through its IPO and since then it has not raised any additional funds through Venture Capitalist or private investors.

In 1987 UNIX-based Oracle applications were introduced and a year later Oracle v6 was released with hot backups, embedded PL/SQL procedural engine within the database and support for row-level locking. In 1988 Oracle induced PL/SQL. The growth in the company led to relocation of the world headquarters to Redwood Shores, California in 1989 and revenues reaching $584 million.

In 1989, Oracle moved its headquarters to Redwood City, California. 

In 1995, Oracle Systems Corporation changes its name to Oracle Corporation and it became the first large software company to report an internet strategy and offered the first 64-bit RDBMS.
In June 1998 Oracle v8 was released with internet technology, support for terabytes of data and SQL object technology. 

In 1998 they announced integrating a JVM with the oracle database and in September of that year Oracle 8i was release, with i standing for internet. 
In 1999 Oracle offered its first DBMS with XML support.

In 2010 Oracle Corporation acquired Sun Microsystems After the merger Oracle owned Sun's hardware product lines as well as Sun's software product lines including the JAVA programming language.
My tryst with JAVA

Oracle Corporation has now diversified into a range of services like Oracle cloud services, Oracle middleware, Oracle Beehive, Financial services, hardware systems etc.
Middleware includes weblogic server which is a J2EE server and Oracle fusion middleware.
Oracle applications include ERP, CRM and Human Capital Management HCM.
Cloud services include SaaS Software as a service, PaaS Platform as a Service, IaaS  Infracture as a Service and DaaS Database as a Service.

More on the history and the growth of the relational database can be found in the articles below

Key Events and Milestones 

Thought for the day
Courage to continue matters more than success or failure.
--Winston Churchill

Thursday, August 27, 2026

The Spring Framework

 The spring framework is a lightweight framework used to build scalable, maintainable enterprise applications.  It works on the principle of Inversion of Control. (IoC).

What is Inversion of Control?

It refers to the reversal of flow of control in a program. In this the control is shifted to an external entity (the IOC container in case of Spring) that manages the creation and injection of dependencies. The IoC container creates and wires the objects together, allowing objects to focus on their main responsibilities.

In normal flow, a program's custom code calls reusable libraries to take care of generic tasks, but with IoC it is the framework that calls the custom code. In essence, this means delegating execution of tasks to generic code instead of specific code allowing for more versatility. It carries the philosophy that reusable code and problem specific code be developed independently even though they operate together in an application.

Inversion of Control can be achieved through dependency injection, callbacks, schedulers, event loops to name a few methods. We will discuss more deeply on Dependency Injection.

Dependency Injection.

Dependency injection is a design pattern used to remove manual hard coded dependencies in classes by externalizing the creation and management of objects (dependencies). 

Instead of an object creating its dependencies itself, it relies on an external entity (the container) to provide the required dependencies. DI promotes loose coupling and improves the flexibility and testability of the code. The dependency injection (DI) pattern is one of the ways to implement IoC. 

The Spring container handles all the object instantiation and initialization and injection in the right places.

The Spring Bean is an object that is created and managed by the Spring IoC container.

Thus the Spring IoC container acts like a bag of beans and is responsible for

  • Bean creation, maintenance and deletion. - The container reads the bean definitions (from the XML files or annotations), creates the bean instances and manages their life cycles.


The Spring IoC Container

The Spring container uses IoC to manage the objects (Spring Beans) that make up an application. The container gets its instructions on what objects to instantiate, configure and assemble by reading the configuration metadata provided. This configuration metadata can be either an XML file, Java annotation or Java code. The container makes use of Java POJO classes and configuration metadata to produce a fully configured and executable system or application.




There are two distinct types of containers that the Spring Framework provides.
  • The Spring BeanFactory Container
  • The Spring ApplicationContext Container.

The BeanFactory Container - This container provides the basic support for DI and is defined by org.springframework.beans.factory.BeanFactory interface. The BeanFactory and related interfaces, such as BeanFactoryAware, InitializingBean, DisposableBean, are still present in Spring for the purpose of backward compatibility with a large number of third party frameworks that integrate with Spring.

The key features of the BeanFactory are

  • Lazy Initialization : Beans are created only when explicitly requested.
  • Lightweight : Minimal memory usage, suitable for resource-constrained environments.
  • Basic Bean Management : Supports bean instantiation, configuration, and lifecycle methods like init and destroy.
Example :

// Using BeanFactory (rarely used directly in modern Spring apps)
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
MyBean bean = factory.getBean(MyBean.class);

The ApplicationContext Container - This container adds more enterprise specific functionality such as the ability to resolve textual messages from a properties file and the ability to publish application events to interested event listeners. This container is defined by the org.springframework.context.ApplicationContext interface. This container includes all the functionality of the BeanFactory container and so in recommended over BeanFactory container.  Thus ApplicationContext is a superset of the BeanFactory and is the preferred choice for Spring Boot applications. It extends BeanFactory to add enterprise specific features, making it more powerful and developer friendly.

Key Features

  • Eager Initialization - Beans are configures at startup (unless explicitly configured as lazy.)

Enterprise Features

  • AOP Integration - Built is support for Aspect-Oriented programming.
  • Event Handling - Publishes and listens to application events. (eg. - ContextRefreshedEvent).
  • Internationalization (i18n) : Supports message resource handling for multilingual apps.
  • Resource Loading: Access to files, URLs and classpath resources.
  • Annotation Support: Auto detects @Component, @Autowired etc.

Example

// Using ApplicationContext (common in Spring Boot)
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
MyBean bean = context.getBean(MyBean.class);
ApplicationContext is used in most modern Spring Boot applications especially in apps requiring advanced features like events, AOPs, or resource handling.

References 


God's Word for the day

Hypocrisy and Retribution
Whoever winks the eye plans mischief
    and those who know him will keep their distance.
In your presence his mouth is all sweetness
    and he admires your words;
But later he will twist his speech, and with your
    own words he will trip you up.
I have hated many things but him above all;
    even the Lord hates him
Whoever throws a stone straight up throws it on his own head
    and a treacherous blow opens up many wounds.
Whoever digs a pit will fall into it,
    and whoever sets a snare will be caught in it.
If a person does evil it will rollback on him
    and he will not know where it came from
Mockery and abuse issue from the proud,
    but vengeance lies in wait for them like a lion.
Those who rejoice in the fall of the godly will be caught in a snare
    and pain will consume them before their death.
 
Sirach 27:22 - 29

Gospel teachings of Jesus

The laborers in the vineyard
For the kingdom of heaven is like a landowner who went out
     early in the morning to hire laborers for his vineyard.
After agreeing with the laborers for the usual daily wage,
    he sent them into his vineyard. When he went out about
nine O' clock, he saw others standing idle in the marketplace.
    and he said to them, 'You also go into the vineyard and I will
pay you whatever is right. So they went. When he went out 
    again about noon and about 3 O 'clock he did the same. And
about five O'clock he went out and saw others standing around,
    and he said to them, 'Why are you standing here idle all day?'
And they said to him, 'Because no one has hired us.'
    He said to them, 'You also go into the vineyard.' When evening
came the owner of the vineyard said to the manager, 'Call the
    laborers and give them their pay, beginning from the last and
going to the first.' When those hired about five O' clock each of 
    them received the usual daily wage. Now when the first came
they thought they would receive more; but each of them received
   the usual daily wage.  Now when the first came

Mathew 19:27 - 30

Tuesday, August 18, 2026

Dewdrops Aug 2026



God's Word for the day
Tests in Life
When a sieve is shaken, the refuse appears,
  so do a person's faults when he speaks.
The kiln tests a potter's vessels;
  so the test of a person is in his conversation.
Its fruit discloses the cultivation of a tree;
  So a person's speech discloses the cultivation
of his mind.
  Do not praise anyone before he speaks,
For this is the way people are tested.`
Sirach 27:4-7

Gospel teachings of Jesus
Jesus Blesses little children
Then little children were being brought to him
  In order that he might lay his hands on them 
and pray. The disciples spoke sternly to those
  who brought them; But Jesus said, "Let the 
little children come to me, and do not stop them.
  For it is to such as these that the kingdom of
heaven belongs." And he laid his hands on them
  and went on his way.

Mathew 19:13 - 15

Saturday, August 8, 2026

A Springboot web application using basic HTML for Frontend UI

Below is an example of creating a springboot application with basic HTML for the front end.
The folder structure for this example is as below.
Here we need the thymeleaf artifactId to render HTML views.

springdemo/
│
├── pom.xml
└── src/
    └── main/
        ├── java/
        │   └── com/
        │       └── example/
        │           └── springdemo/
        │               ├── Application.java
        │               └── controller/
        │                   └── GreetingController.java
        └── resources/
            └── templates/
                └── greeting.html
The source code

Application.java
package com.example.springdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
GreetingController.java
package com.example.springdemo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class GreetingController {

    @GetMapping("/greeting")
    public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) {
        // Pass the name variable to the HTML template
        model.addAttribute("name", name);
        
        // Returns the name of the HTML file (greeting.html)
        return "greeting";
    }
}
greeting.html
<!DOCTYPE html>
<html xmlns:th="http://thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Spring Boot Greeting</title>
</head>
<body>
    <!-- Thymeleaf replaces the placeholder text with the actual dynamic value -->
    <h1 th:text="'Hello, ' + ${name} + '!'">Hello, User!</h1>
</body>
</html>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://apache.org"
         xmlns:xsi="http://w3.org"
         xsi:schemaLocation="http://apache.org https://apache.org">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.example</groupId>
    <artifactId>springdemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name/>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <!-- Spring MVC for Web development -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Thymeleaf for rendering HTML views -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Run as below http://localhost:8080/greeting?name=John

When running the application, if you get error
Error: Could not find or load main class com.example.demo.DemoApplication
Caused by: java.lang.ClassNotFoundException: com.example.demo.DemoApplication

Reload Maven Dependencies

  1. Open the Maven tool window on the right sidebar (or press Ctrl + Shift + A and search for "Maven").

  2. Click the Reload All Maven Projects icon (the dual-arrow icon in the top left of the Maven window).

  3. Open the Terminal in IntelliJ and run: - mvn clean package -DskipTests

Thursday, August 6, 2026

Oracle News Aug 2026

God's Word for the day
Reward and Retribution
If you pursue justice, you will attain it
  and wear it like a glorious robe.
Birds roost with their own kind, so honesty
  comes to those who practice it.
A lion lies in wait for prey;
  so does sin for evil doers.
Sirach 27:8-10

Gospel teachings of Jesus
The rich young man
Then someone came to him and said, 
  "Teacher, what good deed must I do to have eternal life?"
And he said to him, "Why do you ask me about what is good?
  There is only one who is good. If you wish to enter into life,
keep the commandments. He said to him, "Which ones?". 
  And Jesus said, "You shall not murder; you shall not commit
adultery; You shall not steal; You shall not bear false witness;
  Honor your Father and Mother; also, You shall love your
neighbor as yourself." The young man said to him, "I have kept
all these, what do I still lack?" Jesus said to him, "If you wish to
  be perfect, go, sell your possessions; and give the money to the
poor, and you will have treasure in heaven; then come follow me."
Mathew 19:16 - 21

Wednesday, August 5, 2026

Dewdrops Jul 2026



God's Word for the day

Tests in Life
When a sieve is shaken, the refuse appears,
  so do a person's faults when he speaks.
The kiln tests a potter's vessels;
  so the test of a person is in his conversation.
Its fruit discloses the cultivation of a tree;
  so a persons speech discloses the cultivation of his mind.
Do not praise anyone before he speaks,
  For this is the way people are tested.
Sirach 27:4-7

Gospel teachings of Jesus

The rich young man
Then someone came to him and said, "Teacher,
  what good deed must I do to have eternal life?
And he said to him, "Why do you ask me about
  what is good? There is only one who is good.
If you wish to enter into life, keep the 
  commandments." He said to him, "Which ones?"
And Jesus said, "You shall not murder; you shall
  not commit adultery; You shall not steal; You 
shall not bear false witness; Honor your father
  and mother; also You shall love your neighbor 
as yourself." The young man said to hime, "I have
  kept all these, what do I still lack?" Jesus said to
him, "If you wish to be perfect, go sell your
  possessions and give the money to the poor, and
you will have treasure in heaven. then come follow me."
Mathew 19:16 - 21