Western Governors University

D387: Advanced Java

A WGU computer science course on multithreaded Java and deploying applications with cloud services.

Updated October 2026 · 5 min read

Advanced Java is a Western Governors University course in the Bachelor of Science in Computer Science and related software programs.

WGU says it refines object-oriented programming expertise: you implement multithreaded, object-oriented code with Java features needed to meet business requirements, and decide how to deploy applications using cloud services. It carries 3 competency units and sits in the sixth term of the Computer Science standard plan.

WGU states that the course requires intermediate expertise in object-oriented programming and the Java language. Concurrency is the hard part: code can look correct and still fail intermittently, and deployment brings configuration problems that do not appear on your own machine.

Course at a Glance

ItemDetails
UniversityWestern Governors University (WGU)
Course codeD387
LevelUndergraduate
ProgramB.S. Computer Science (also software engineering programs)
Credit3 competency units
Prior knowledgeIntermediate object-oriented programming and Java, per WGU
Typical workExtending a Java application with threads and deploying it to the cloud

What D387 Covers

Competency (WGU wording, summarized)What it means in practice
Write multithreaded, object-oriented code using Java frameworksRunning work on several threads safely inside a structured Java application
Determine how to deploy software applications using cloud servicesChoosing and configuring a cloud service so the application runs outside your machine

Behind these sit core object-oriented ideas such as classes, interfaces and encapsulation, plus Java's concurrency tools and the basics of building and packaging an application.

Key Concepts Explained

Threads and Shared State

A thread is an independent path of execution. Starting threads is easy; sharing data between them is where bugs appear. A race condition occurs when two threads change the same value at once and the result depends on timing.

Example: Two threads each add 1 to a shared counter 1,000 times. With a plain int the final value is often below 2,000 because updates overlap. Using synchronized or an AtomicInteger makes each update indivisible, so the total is reliably 2,000. Run it several times to show the fix is stable.

Managing Threads with Executors

Instead of creating threads by hand, Java provides executor services that manage a pool of threads. You submit tasks, then wait for completion and shut the pool down. This keeps code cleaner and avoids creating too many threads.

Deploying to a Cloud Service

Deployment means packaging the application, supplying its configuration (ports, environment values, credentials kept out of source code) and starting it on a managed service. Typical problems are missing configuration, wrong port settings and dependencies available locally but not in the build.

Typical Assignments and How to Approach Them

Details depend on the course version, so follow your own instructions. Common patterns include the following.

Task typeWhat it testsHow to approach it
Add concurrent behavior to an existing applicationCorrect use of threads and synchronisationIdentify shared data first, then protect it or avoid sharing
Meet a business requirement in codeTurning requirements into working featuresWrite down the requirement, implement it, and test with realistic input
Cloud deploymentUnderstanding of services and configurationRecord each step and setting so the process can be repeated
Supporting documentationExplaining your choicesKeep notes on design decisions and test results as you work

Where Students Get Stuck

Showing That Your Code Works

Concurrent code is hard to judge by reading alone, so evidence matters. Keep a short test log: what you ran, how many times, what you expected and what happened. If a result differed between runs, say how you changed the code and show the later runs.

For deployment, record the service you used, the settings you changed and the address where the application ran. A reader should be able to repeat your steps without guessing. Screenshots of a working deployment and of console output are far more convincing than a description.

Study Tips for D387

How We Help with D387

Send the task description, your code, any error messages and the rubric. A Java developer can explain the concurrency design, show a worked example as a model, or review your code and deployment notes for issues.

GradeEssays is independent and not affiliated with WGU. Our help is for study and reference: learn the approach, then write and submit your own work under WGU's academic integrity policy. Orders are written from scratch, with free revisions within the scope of your original request and a full refund if late.

Make Your D387 Code Clearer

Share the task, your code and the error output. We prepare an explained example you can study and learn from.

Start My D387 Help

Free revisions · Full refund if late · Written from scratch for your order

Frequently Asked Questions

What do I need to know before D387?

WGU says the course requires intermediate expertise in object-oriented programming and the Java language.

What are the D387 competencies?

Writing multithreaded, object-oriented code using Java frameworks, and determining how to deploy applications using cloud services.

Which degrees include D387?

WGU lists it in the Computer Science degree and in software engineering programs. Check your own plan.

Why does my multithreaded code give different results each run?

A race condition on shared data is the usual cause. Protect the data or redesign to avoid sharing it.

Does D387 involve the cloud?

Yes. Deploying an application using cloud services is one of the two competencies.

Will you write my code for submission?

No. We explain, review and provide models for study. You write and submit your own work.